94 if (selected && (myViewNet->getViewParent()->getGNEAppWindows()->getLockMenuCommands().menuCheckLockSelectedElements->getCheck() == TRUE)) {
101 return myLockedElements.at(
GLO_WIRE).lock;
115 return myLockedElements.at(objectType).lock;
194 mySupermode(supermode) {
212 mySwapLane2edge(false) {
219 mySwapLane2edge =
false;
221 myEdgeObjects.clearElements();
222 myLaneObjects.clearElements();
224 sortGUIGlObjects(GUIGlObjects);
226 processGUIGlObjects();
233 mySwapLane2edge =
true;
240 auto edgeACs = myEdgeObjects.attributeCarriers;
241 auto laneACs = myLaneObjects.attributeCarriers;
243 myEdgeObjects.clearElements();
244 myLaneObjects.clearElements();
246 for (
const auto& edgeAC : edgeACs) {
247 if (std::find(forcedIgnoredTiped.begin(), forcedIgnoredTiped.end(), edgeAC->getGUIGlObject()->getType()) != forcedIgnoredTiped.end()) {
249 }
else if (!lockManager.
isObjectLocked(edgeAC->getGUIGlObject()->getType(), edgeAC->isAttributeCarrierSelected())) {
250 myEdgeObjects.GUIGlObjects.push_back(edgeAC->getGUIGlObject());
253 for (
const auto& laneAC : laneACs) {
254 if (std::find(forcedIgnoredTiped.begin(), forcedIgnoredTiped.end(), laneAC->getGUIGlObject()->getType()) != forcedIgnoredTiped.end()) {
256 }
else if (!lockManager.
isObjectLocked(laneAC->getGUIGlObject()->getType(), laneAC->isAttributeCarrierSelected())) {
257 myLaneObjects.GUIGlObjects.push_back(laneAC->getGUIGlObject());
261 processGUIGlObjects();
267 if (getGUIGlObjectFront()) {
268 return getGUIGlObjectFront()->getGlID();
277 if (getGUIGlObjectFront()) {
278 return getGUIGlObjectFront()->getType();
287 if (mySwapLane2edge) {
288 if (myEdgeObjects.attributeCarriers.size() > 0) {
289 return myEdgeObjects.GUIGlObjects.front();
294 if (myLaneObjects.attributeCarriers.size() > 0) {
295 return myLaneObjects.GUIGlObjects.front();
305 if (mySwapLane2edge) {
306 if (myEdgeObjects.attributeCarriers.size() > 0) {
307 return myEdgeObjects.attributeCarriers.front();
312 if (myLaneObjects.attributeCarriers.size() > 0) {
313 return myLaneObjects.attributeCarriers.front();
323 if (mySwapLane2edge) {
324 if (myEdgeObjects.networkElements.size() > 0) {
325 return myEdgeObjects.networkElements.front();
330 if (myLaneObjects.networkElements.size() > 0) {
331 return myLaneObjects.networkElements.front();
341 if (mySwapLane2edge) {
342 if (myEdgeObjects.additionals.size() > 0) {
343 return myEdgeObjects.additionals.front();
348 if (myLaneObjects.additionals.size() > 0) {
349 return myLaneObjects.additionals.front();
359 if (mySwapLane2edge) {
360 if (myEdgeObjects.demandElements.size() > 0) {
361 return myEdgeObjects.demandElements.front();
366 if (myLaneObjects.demandElements.size() > 0) {
367 return myLaneObjects.demandElements.front();
377 if (mySwapLane2edge) {
378 if (myEdgeObjects.genericDatas.size() > 0) {
379 return myEdgeObjects.genericDatas.front();
384 if (myLaneObjects.genericDatas.size() > 0) {
385 return myLaneObjects.genericDatas.front();
395 if (mySwapLane2edge) {
396 if (myEdgeObjects.junctions.size() > 0) {
397 return myEdgeObjects.junctions.front();
402 if (myLaneObjects.junctions.size() > 0) {
403 return myLaneObjects.junctions.front();
413 if (mySwapLane2edge) {
414 if (myEdgeObjects.edges.size() > 0) {
415 return myEdgeObjects.edges.front();
420 if (myLaneObjects.edges.size() > 0) {
421 return myLaneObjects.edges.front();
431 if (mySwapLane2edge) {
432 if (myEdgeObjects.lanes.size() > 0) {
433 return myEdgeObjects.lanes.front();
438 if (myLaneObjects.lanes.size() > 0) {
439 return myLaneObjects.lanes.front();
449 if (mySwapLane2edge) {
450 if (myEdgeObjects.lanes.size() > 0) {
451 for (
auto& lane : myEdgeObjects.lanes) {
452 if (!(lane->isAttributeCarrierSelected() || lane->getParentEdge()->isAttributeCarrierSelected()) ||
453 !myViewNet->getViewParent()->getGNEAppWindows()->getLockMenuCommands().menuCheckLockSelectedElements->getCheck()) {
463 if (myLaneObjects.lanes.size() > 0) {
464 for (
auto& lane : myLaneObjects.lanes) {
465 if (!(lane->isAttributeCarrierSelected() || lane->getParentEdge()->isAttributeCarrierSelected()) ||
466 !myViewNet->getViewParent()->getGNEAppWindows()->getLockMenuCommands().menuCheckLockSelectedElements->getCheck()) {
479const std::vector<GNELane*>&
481 if (mySwapLane2edge) {
482 return myEdgeObjects.lanes;
484 return myLaneObjects.lanes;
491 if (mySwapLane2edge) {
492 if (myEdgeObjects.crossings.size() > 0) {
493 return myEdgeObjects.crossings.front();
498 if (myLaneObjects.crossings.size() > 0) {
499 return myLaneObjects.crossings.front();
509 if (mySwapLane2edge) {
510 if (myEdgeObjects.walkingAreas.size() > 0) {
511 return myEdgeObjects.walkingAreas.front();
516 if (myLaneObjects.walkingAreas.size() > 0) {
517 return myLaneObjects.walkingAreas.front();
527 if (mySwapLane2edge) {
528 if (myEdgeObjects.connections.size() > 0) {
529 return myEdgeObjects.connections.front();
534 if (myLaneObjects.connections.size() > 0) {
535 return myLaneObjects.connections.front();
545 if (mySwapLane2edge) {
546 if (myEdgeObjects.internalLanes.size() > 0) {
547 return myEdgeObjects.internalLanes.front();
552 if (myLaneObjects.internalLanes.size() > 0) {
553 return myLaneObjects.internalLanes.front();
563 if (mySwapLane2edge) {
564 if (myEdgeObjects.POIs.size() > 0) {
565 return myEdgeObjects.POIs.front();
570 if (myLaneObjects.POIs.size() > 0) {
571 return myLaneObjects.POIs.front();
581 if (mySwapLane2edge) {
582 if (myEdgeObjects.polys.size() > 0) {
583 return myEdgeObjects.polys.front();
588 if (myLaneObjects.polys.size() > 0) {
589 return myLaneObjects.polys.front();
599 if (mySwapLane2edge) {
600 if (myEdgeObjects.TAZs.size() > 0) {
601 return myEdgeObjects.TAZs.front();
606 if (myLaneObjects.TAZs.size() > 0) {
607 return myLaneObjects.TAZs.front();
617 if (mySwapLane2edge) {
618 if (myEdgeObjects.edgeDatas.size() > 0) {
619 return myEdgeObjects.edgeDatas.front();
624 if (myLaneObjects.edgeDatas.size() > 0) {
625 return myLaneObjects.edgeDatas.front();
635 if (mySwapLane2edge) {
636 if (myEdgeObjects.edgeRelDatas.size() > 0) {
637 return myEdgeObjects.edgeRelDatas.front();
642 if (myLaneObjects.edgeRelDatas.size() > 0) {
643 return myLaneObjects.edgeRelDatas.front();
650const std::vector<GUIGlObject*>&
652 if (mySwapLane2edge) {
653 return myEdgeObjects.GUIGlObjects;
655 return myLaneObjects.GUIGlObjects;
660const std::vector<GNEAttributeCarrier*>&
662 if (mySwapLane2edge) {
663 return myEdgeObjects.attributeCarriers;
665 return myLaneObjects.attributeCarriers;
670const std::vector<GNEDemandElement*>&
672 if (mySwapLane2edge) {
673 return myEdgeObjects.demandElements;
675 return myLaneObjects.demandElements;
686 GUIGlObjects.clear();
687 attributeCarriers.clear();
688 networkElements.clear();
690 demandElements.clear();
695 walkingAreas.clear();
697 internalLanes.clear();
701 genericDatas.clear();
703 edgeRelDatas.clear();
710 std::map<double, std::vector<GUIGlObject*> > mySortedGUIGlObjects;
712 for (
const auto& GLObject : GUIGlObjects) {
714 const Shape* shape =
dynamic_cast<Shape*
>(GLObject);
716 mySortedGUIGlObjects[shape->
getShapeLayer()].push_back(GLObject);
718 mySortedGUIGlObjects[GLObject->getType()].push_back(GLObject);
722 for (std::map<
double, std::vector<GUIGlObject*> >::reverse_iterator i = mySortedGUIGlObjects.rbegin(); i != mySortedGUIGlObjects.rend(); i++) {
723 for (
const auto& GlObject : i->second) {
727 if (GlObject->getType() ==
GLO_LANE) {
728 myLaneObjects.GUIGlObjects.push_back(GlObject);
730 myEdgeObjects.GUIGlObjects.push_back(GlObject);
731 myLaneObjects.GUIGlObjects.push_back(GlObject);
868 if (additionalElement == myViewNet->getFrontAttributeCarrier()) {
873 container.
additionals.push_back(additionalElement);
886 if (AC == myViewNet->getFrontAttributeCarrier()) {
888 container.
POIs.insert(container.
POIs.begin(),
POI);
899 if (AC == myViewNet->getFrontAttributeCarrier()) {
901 container.
polys.insert(container.
polys.begin(), poly);
904 container.
polys.push_back(poly);
919 if (AC == myViewNet->getFrontAttributeCarrier()) {
921 container.
TAZs.insert(container.
TAZs.begin(),
TAZ);
936 if (demandElement == myViewNet->getFrontAttributeCarrier()) {
995 container.
GUIGlObjects.push_back(attributeCarrrier->getGUIGlObject());
1003 for (
const auto& glObject : myEdgeObjects.GUIGlObjects) {
1009 updateAttributeCarriers(myEdgeObjects, AC);
1013 updateNetworkElements(myEdgeObjects, AC);
1016 updateAdditionalElements(myEdgeObjects, AC);
1020 updateShapeElements(myEdgeObjects, AC);
1024 updateTAZElements(myEdgeObjects, AC);
1028 updateDemandElements(myEdgeObjects, AC);
1031 updateGenericDataElements(myEdgeObjects, AC);
1036 updateGUIGlObjects(myEdgeObjects);
1038 for (
const auto& glObject : myLaneObjects.GUIGlObjects) {
1044 updateAttributeCarriers(myLaneObjects, AC);
1048 updateNetworkElements(myLaneObjects, AC);
1051 updateAdditionalElements(myLaneObjects, AC);
1055 updateShapeElements(myLaneObjects, AC);
1059 updateTAZElements(myLaneObjects, AC);
1063 updateDemandElements(myLaneObjects, AC);
1066 updateGenericDataElements(myLaneObjects, AC);
1071 updateGUIGlObjects(myLaneObjects);
1077 mySwapLane2edge(false) {
1085 myEventInfo(nullptr) {
1091 myEventInfo = (FXEvent*) eventData;
1098 return (myEventInfo->state & SHIFTMASK) != 0;
1108 return (myEventInfo->state & CONTROLMASK) != 0;
1118 return (myEventInfo->state & ALTMASK) != 0;
1128 return (myEventInfo->state & LEFTBUTTONMASK) != 0;
1138 return (myEventInfo->state & RIGHTBUTTONMASK) != 0;
1149 myViewNet(viewNet) {
1156 myRelativeClickedPosition = myViewNet->getPositionInformation();
1158 const GNENetworkElement* editedElement = myViewNet->myEditNetworkElementShapes.getEditedNetworkElement();
1160 if (myViewNet->myObjectsUnderCursor.getJunctionFront() && (myViewNet->myObjectsUnderCursor.getJunctionFront() == editedElement)) {
1162 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getJunctionFront()->getMoveOperation();
1164 if (moveOperation) {
1165 myMoveOperations.push_back(moveOperation);
1170 }
else if (myViewNet->myObjectsUnderCursor.getLaneFront() && (myViewNet->myObjectsUnderCursor.getLaneFront() == editedElement)) {
1172 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getLaneFront()->getMoveOperation();
1174 if (moveOperation) {
1175 myMoveOperations.push_back(moveOperation);
1180 }
else if (myViewNet->myObjectsUnderCursor.getCrossingFront() && (myViewNet->myObjectsUnderCursor.getCrossingFront() == editedElement)) {
1182 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getCrossingFront()->getMoveOperation();
1184 if (moveOperation) {
1185 myMoveOperations.push_back(moveOperation);
1190 }
else if (myViewNet->myObjectsUnderCursor.getConnectionFront() && (myViewNet->myObjectsUnderCursor.getConnectionFront() == editedElement)) {
1192 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getConnectionFront()->getMoveOperation();
1194 if (moveOperation) {
1195 myMoveOperations.push_back(moveOperation);
1200 }
else if (myViewNet->myObjectsUnderCursor.getWalkingAreaFront() && (myViewNet->myObjectsUnderCursor.getWalkingAreaFront() == editedElement)) {
1202 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getWalkingAreaFront()->getMoveOperation();
1204 if (moveOperation) {
1205 myMoveOperations.push_back(moveOperation);
1220 myRelativeClickedPosition = myViewNet->getPositionInformation();
1222 const GNEAttributeCarrier* frontAC = myViewNet->myObjectsUnderCursor.getAttributeCarrierFront();
1224 if (myViewNet->myObjectsUnderCursor.getPolyFront() && (frontAC == myViewNet->myObjectsUnderCursor.getPolyFront())) {
1226 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getPolyFront()->getMoveOperation();
1228 if (moveOperation) {
1229 myMoveOperations.push_back(moveOperation);
1234 }
else if (myViewNet->myObjectsUnderCursor.getPOIFront() && (frontAC == myViewNet->myObjectsUnderCursor.getPOIFront())) {
1236 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getPOIFront()->getMoveOperation();
1238 if (moveOperation) {
1239 myMoveOperations.push_back(moveOperation);
1244 }
else if (myViewNet->myObjectsUnderCursor.getAdditionalFront() && (frontAC == myViewNet->myObjectsUnderCursor.getAdditionalFront())) {
1246 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getAdditionalFront()->getMoveOperation();
1248 if (moveOperation) {
1249 myMoveOperations.push_back(moveOperation);
1254 }
else if (myViewNet->myObjectsUnderCursor.getJunctionFront() && (frontAC == myViewNet->myObjectsUnderCursor.getJunctionFront())) {
1256 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getJunctionFront()->getMoveOperation();
1258 if (moveOperation) {
1259 myMoveOperations.push_back(moveOperation);
1264 }
else if ((myViewNet->myObjectsUnderCursor.getEdgeFront() && (frontAC == myViewNet->myObjectsUnderCursor.getEdgeFront())) ||
1265 (myViewNet->myObjectsUnderCursor.getLaneFront() && (frontAC == myViewNet->myObjectsUnderCursor.getLaneFront()))) {
1267 if (myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1269 myViewNet->myObjectsUnderCursor.getEdgeFront()->editEndpoint(myViewNet->getPositionInformation(), myViewNet->myUndoList);
1274 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getEdgeFront()->getMoveOperation();
1276 if (moveOperation) {
1277 myMoveOperations.push_back(moveOperation);
1293 myRelativeClickedPosition = myViewNet->getPositionInformation();
1295 const GNEAttributeCarrier* frontAC = myViewNet->myObjectsUnderCursor.getAttributeCarrierFront();
1297 if (myViewNet->myObjectsUnderCursor.getDemandElementFront() && (frontAC == myViewNet->myObjectsUnderCursor.getDemandElementFront())) {
1299 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getDemandElementFront()->getMoveOperation();
1301 if (moveOperation) {
1302 myMoveOperations.push_back(moveOperation);
1320 if (mouseLeftButtonPressed) {
1322 for (
const auto& moveOperation : myMoveOperations) {
1328 for (
const auto& moveOperation : myMoveOperations) {
1332 delete moveOperation;
1335 myMoveOperations.clear();
1345 for (
const auto& moveOperation : myMoveOperations) {
1348 delete moveOperation;
1351 myMoveOperations.clear();
1359 Position moveOffset = (myViewNet->getPositionInformation() - myViewNet->myMoveSingleElementValues.myRelativeClickedPosition);
1361 if (myViewNet->myNetworkViewOptions.menuCheckMoveElevation->shown() && myViewNet->myNetworkViewOptions.menuCheckMoveElevation->amChecked() == TRUE) {
1376 myMovingSelectedEdge(false),
1384 myClickedPosition = myViewNet->getPositionInformation();
1386 if (myViewNet->myObjectsUnderCursor.getJunctionFront()) {
1387 calculateJunctionSelection();
1388 }
else if (myViewNet->myObjectsUnderCursor.getEdgeFront()) {
1389 calculateEdgeSelection(myViewNet->myObjectsUnderCursor.getEdgeFront());
1399 if (mouseLeftButtonPressed) {
1401 for (
const auto& moveOperation : myMoveOperations) {
1405 }
else if (myMoveOperations.size() > 0) {
1409 for (
const auto& moveOperation : myMoveOperations) {
1413 delete moveOperation;
1416 myViewNet->getUndoList()->end();
1418 myMoveOperations.clear();
1430 for (
const auto& moveOperation : myMoveOperations) {
1433 delete moveOperation;
1436 myViewNet->getUndoList()->end();
1438 myMoveOperations.clear();
1444 return (myMoveOperations.size() > 0);
1450 return myMovingSelectedEdge;
1456 myMovingSelectedEdge =
false;
1462 return myEdgeOffset;
1470 Position moveOffset = (myViewNet->getPositionInformation() - myClickedPosition);
1472 if (myViewNet->myNetworkViewOptions.menuCheckMoveElevation->shown() && myViewNet->myNetworkViewOptions.menuCheckMoveElevation->amChecked() == TRUE) {
1487 const auto selectedJunctions = myViewNet->getNet()->getAttributeCarriers()->getSelectedJunctions();
1489 for (
const auto& junction : selectedJunctions) {
1490 moveOperation = junction->getMoveOperation();
1491 if (moveOperation) {
1492 myMoveOperations.push_back(moveOperation);
1496 const auto selectedEdges = myViewNet->getNet()->getAttributeCarriers()->getSelectedEdges();
1498 for (
const auto& edge : selectedEdges) {
1499 moveOperation = edge->getMoveOperation();
1500 if (moveOperation) {
1501 myMoveOperations.push_back(moveOperation);
1510 const auto selectedJunctions = myViewNet->getNet()->getAttributeCarriers()->getSelectedJunctions();
1512 for (
const auto& junction : selectedJunctions) {
1514 if (moveOperation) {
1515 myMoveOperations.push_back(moveOperation);
1519 myMovingSelectedEdge =
true;
1526 myEdgeOffset = shape.length2D() - shape.nearest_offset_to_point2D(myViewNet->getPositionInformation());
1529 const auto selectedEdges = myViewNet->getNet()->getAttributeCarriers()->getSelectedEdges();
1531 for (
const auto& edge : selectedEdges) {
1534 if (moveOperation) {
1535 myMoveOperations.push_back(moveOperation);
1545 myViewNet(viewNet) {
1566 myViewNet(viewNet) {
1587 selectingUsingRectangle(false),
1588 startDrawing(false),
1589 myViewNet(viewNet) {
1595 selectingUsingRectangle =
true;
1596 selectionCorner1 = myViewNet->getPositionInformation();
1597 selectionCorner2 = selectionCorner1;
1604 startDrawing =
true;
1606 selectionCorner2 = myViewNet->getPositionInformation();
1608 myViewNet->setStatusBarText(
"Selection width:" +
toString(fabs(selectionCorner1.x() - selectionCorner2.x()))
1609 +
" height:" +
toString(fabs(selectionCorner1.y() - selectionCorner2.y()))
1610 +
" diagonal:" +
toString(selectionCorner1.distanceTo2D(selectionCorner2)));
1617 selectingUsingRectangle =
false;
1618 startDrawing =
false;
1620 myViewNet->setStatusBarText(
"");
1627 if ((abs(selectionCorner1.x() - selectionCorner2.x()) > 0.01) &&
1628 (abs(selectionCorner1.y() - selectionCorner2.y()) > 0.01) &&
1629 myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1632 rectangleBoundary.
add(selectionCorner1);
1633 rectangleBoundary.
add(selectionCorner2);
1635 processBoundarySelection(rectangleBoundary);
1640std::vector<GNEEdge*>
1643 std::vector<GNEEdge*> result;
1645 if ((abs(selectionCorner1.x() - selectionCorner2.x()) > 0.01) &&
1646 (abs(selectionCorner1.y() - selectionCorner2.y()) > 0.01) &&
1647 myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1650 rectangleBoundary.
add(selectionCorner1);
1651 rectangleBoundary.
add(selectionCorner2);
1652 if (myViewNet->makeCurrent()) {
1654 std::set<std::pair<std::string, GNEAttributeCarrier*> > ACsInBoundary = myViewNet->getAttributeCarriersInBoundary(rectangleBoundary);
1656 for (
const auto& AC : ACsInBoundary) {
1657 if (AC.second->getTagProperty().getTag() ==
SUMO_TAG_EDGE) {
1658 result.push_back(
dynamic_cast<GNEEdge*
>(AC.second));
1661 myViewNet->makeNonCurrent();
1676 if (selectingUsingRectangle) {
1681 glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
1683 glVertex2d(selectionCorner1.x(), selectionCorner1.y());
1684 glVertex2d(selectionCorner1.x(), selectionCorner2.y());
1685 glVertex2d(selectionCorner2.x(), selectionCorner2.y());
1686 glVertex2d(selectionCorner2.x(), selectionCorner1.y());
1695 if (myViewNet->makeCurrent()) {
1696 std::set<std::pair<std::string, GNEAttributeCarrier*> > ACsInBoundary = myViewNet->getAttributeCarriersInBoundary(boundary);
1698 std::set<std::pair<std::string, GNEAttributeCarrier*> > ACsInBoundaryFiltered;
1699 for (
const auto& AC : ACsInBoundary) {
1700 if (myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
1701 if (AC.second->getTagProperty().isNetworkElement() || AC.second->getTagProperty().isAdditionalElement()) {
1702 ACsInBoundaryFiltered.insert(AC);
1704 }
else if (myViewNet->myEditModes.isCurrentSupermodeDemand() && AC.second->getTagProperty().isDemandElement()) {
1705 ACsInBoundaryFiltered.insert(AC);
1706 }
else if (myViewNet->myEditModes.isCurrentSupermodeData() && AC.second->getTagProperty().isGenericData()) {
1707 ACsInBoundaryFiltered.insert(AC);
1711 std::vector<GNEAttributeCarrier*> ACToSelect;
1712 std::vector<GNEAttributeCarrier*> ACToUnselect;
1714 ACToSelect.reserve(ACsInBoundaryFiltered.size());
1715 ACToUnselect.reserve(ACsInBoundaryFiltered.size());
1720 const auto selectedAC = myViewNet->getNet()->getAttributeCarriers()->getSelectedAttributeCarriers(
false);
1722 for (
const auto& AC : selectedAC) {
1723 ACToUnselect.push_back(AC);
1727 for (
const auto& AC : ACsInBoundaryFiltered) {
1728 switch (myViewNet->myViewParent->getSelectorFrame()->getModificationModeModule()->getModificationMode()) {
1730 ACToUnselect.push_back(AC.second);
1733 if (std::find(ACToUnselect.begin(), ACToUnselect.end(), AC.second) != ACToUnselect.end()) {
1734 ACToSelect.push_back(AC.second);
1738 ACToSelect.push_back(AC.second);
1744 std::vector<GNEEdge*> edgesToSelect;
1746 for (
const auto& AC : ACToSelect) {
1748 edgesToSelect.push_back(
dynamic_cast<GNEEdge*
>(AC));
1752 for (
const auto& edge : edgesToSelect) {
1754 ACToSelect.push_back(edge->getFromJunction());
1755 for (
const auto& connection : edge->getFromJunction()->getGNEConnections()) {
1756 ACToSelect.push_back(connection);
1758 for (
const auto& crossing : edge->getFromJunction()->getGNECrossings()) {
1759 ACToSelect.push_back(crossing);
1762 ACToSelect.push_back(edge->getToJunction());
1763 for (
const auto& connection : edge->getToJunction()->getGNEConnections()) {
1764 ACToSelect.push_back(connection);
1766 for (
const auto& crossing : edge->getToJunction()->getGNECrossings()) {
1767 ACToSelect.push_back(crossing);
1772 if ((ACToSelect.size() + ACToUnselect.size()) > 0) {
1775 for (
const auto& AC : ACToUnselect) {
1778 for (
const auto& AC : ACToSelect) {
1779 if (AC->getTagProperty().isSelectable()) {
1783 myViewNet->myUndoList->end();
1785 myViewNet->makeNonCurrent();
1795 myTestingEnabled(
OptionsCont::getOptions().getBool(
"gui-testing")),
1797 myTestingHeight(0) {
1807 if ((windowSize.size() == 2) && GNEAttributeCarrier::canParse<int>(windowSize[0]) && GNEAttributeCarrier::canParse<int>(windowSize[1])) {
1808 myTestingWidth = GNEAttributeCarrier::parse<int>(windowSize[0]);
1809 myTestingHeight = GNEAttributeCarrier::parse<int>(windowSize[1]);
1811 WRITE_ERROR(
"Invalid windows size-format: " +
toString(windowSize) +
"for option 'window-size'");
1820 if (myTestingEnabled) {
1822 if (myTestingWidth > 0) {
1823 mainWindow->resize(myTestingWidth, myTestingHeight);
1827 const double size = myViewNet->p2m(32);
1828 Position center = myViewNet->screenPos2NetPos(8, 8);
1833 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
1836 glVertex2d(0, -size);
1837 glVertex2d(size, -size);
1838 glVertex2d(size, 0);
1845 glScaled(0.7, 0.7, 0);
1846 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
1849 glVertex2d(0, -size);
1850 glVertex2d(size, -size);
1851 glVertex2d(size, 0);
1858 glScaled(0.4, 0.4, 0);
1859 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
1862 glVertex2d(0, -size);
1863 glVertex2d(size, -size);
1864 glVertex2d(size, 0);
1873 return myTestingEnabled;
1882 saveNetwork(nullptr),
1883 saveAdditionalElements(nullptr),
1884 saveDemandElements(nullptr),
1885 saveDataElements(nullptr),
1886 myViewNet(viewNet) {
1893 saveAll =
new MFXButtonTooltip(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements,
1894 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
1899 saveNetwork =
new MFXButtonTooltip(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements,
1900 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
1903 saveNetwork->create();
1905 saveAdditionalElements =
new MFXButtonTooltip(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements,
1906 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
1909 saveAdditionalElements->create();
1911 saveDemandElements =
new MFXButtonTooltip(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements,
1912 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
1915 saveDemandElements->create();
1917 saveDataElements =
new MFXButtonTooltip(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements,
1918 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
1921 saveDataElements->create();
1923 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements->recalc();
1925 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements->show();
1937 networkButton(nullptr),
1938 demandButton(nullptr),
1939 dataButton(nullptr),
1948 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes,
1949 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
1950 "Network\tEdit network elements\tSet mode for edit network elements. (F2)",
1952 networkButton->create();
1955 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes,
1956 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
1957 "Demand\tEdit traffic demand elements\tSet mode for edit traffic demand. (F3)",
1959 demandButton->create();
1962 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes,
1963 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
1964 "Data\tEdit data elements\tSet mode for edit data demand. (F4)",
1966 dataButton->create();
1968 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
1970 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes->show();
1976 if (!force && (supermode == currentSupermode)) {
1977 myViewNet->setStatusBarText(
"Mode already selected");
1978 if (myViewNet->myCurrentFrame !=
nullptr) {
1979 myViewNet->myCurrentFrame->focusUpperElement();
1982 myViewNet->setStatusBarText(
"");
1984 myViewNet->abortOperation(
false);
1986 currentSupermode = supermode;
1990 networkButton->setChecked(
true);
1991 demandButton->setChecked(
false);
1992 dataButton->setChecked(
false);
1994 myViewNet->myNetworkCheckableButtons.showNetworkCheckableButtons();
1996 myViewNet->myDemandCheckableButtons.hideDemandCheckableButtons();
1998 myViewNet->myDataCheckableButtons.hideDataCheckableButtons();
2000 setNetworkEditMode(networkEditMode,
true);
2003 networkButton->setChecked(
false);
2004 demandButton->setChecked(
true);
2005 dataButton->setChecked(
false);
2007 myViewNet->myNetworkCheckableButtons.hideNetworkCheckableButtons();
2009 myViewNet->myDemandCheckableButtons.showDemandCheckableButtons();
2011 myViewNet->myDataCheckableButtons.hideDataCheckableButtons();
2013 setDemandEditMode(demandEditMode,
true);
2015 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2017 if (!myViewNet->myNet->getPathManager()->getPathCalculator()->isPathCalculatorUpdated()) {
2019 myViewNet->myNet->getPathManager()->getPathCalculator()->updatePathCalculator();
2021 myViewNet->myNet->computeDemandElements(myViewNet->myViewParent->getGNEAppWindows());
2025 networkButton->setChecked(
false);
2026 demandButton->setChecked(
false);
2027 dataButton->setChecked(
true);
2029 myViewNet->myNetworkCheckableButtons.hideNetworkCheckableButtons();
2031 myViewNet->myDemandCheckableButtons.hideDemandCheckableButtons();
2033 myViewNet->myDataCheckableButtons.showDataCheckableButtons();
2035 setDataEditMode(dataEditMode,
true);
2037 if (myViewNet->getViewParent()->getGNEAppWindows()->getProcessingMenuCommands().menuCheckRecomputeDataMode->getCheck() == TRUE) {
2039 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2042 if (!myViewNet->myNet->getPathManager()->getPathCalculator()->isPathCalculatorUpdated()) {
2044 myViewNet->myNet->getPathManager()->getPathCalculator()->updatePathCalculator();
2046 myViewNet->myNet->computeDemandElements(myViewNet->myViewParent->getGNEAppWindows());
2050 networkButton->update();
2051 demandButton->update();
2052 dataButton->update();
2054 myViewNet->myViewParent->getGNEAppWindows()->updateSuperModeMenuCommands(currentSupermode);
2061 if ((mode == networkEditMode) && !force) {
2062 myViewNet->setStatusBarText(
"Network mode already selected");
2063 if (myViewNet->myCurrentFrame !=
nullptr) {
2064 myViewNet->myCurrentFrame->focusUpperElement();
2067 myViewNet->setStatusBarText(
"Save modifications in TLS before change mode");
2068 myViewNet->myCurrentFrame->focusUpperElement();
2070 myViewNet->setStatusBarText(
"");
2071 myViewNet->abortOperation(
false);
2073 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2075 networkEditMode = mode;
2096 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2102 myViewNet->updateCursor();
2104 myViewNet->updateNetworkModeSpecificControls();
2111 if ((mode == demandEditMode) && !force) {
2112 myViewNet->setStatusBarText(
"Demand mode already selected");
2113 if (myViewNet->myCurrentFrame !=
nullptr) {
2114 myViewNet->myCurrentFrame->focusUpperElement();
2117 myViewNet->setStatusBarText(
"");
2118 myViewNet->abortOperation(
false);
2120 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2122 demandEditMode = mode;
2137 myViewNet->updateCursor();
2139 myViewNet->updateDemandModeSpecificControls();
2146 if ((mode == dataEditMode) && !force) {
2147 myViewNet->setStatusBarText(
"Data mode already selected");
2148 if (myViewNet->myCurrentFrame !=
nullptr) {
2149 myViewNet->myCurrentFrame->focusUpperElement();
2152 myViewNet->setStatusBarText(
"");
2153 myViewNet->abortOperation(
false);
2155 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2157 dataEditMode = mode;
2170 for (
const auto& dataSet : myViewNet->getNet()->getAttributeCarriers()->getDataSets()) {
2171 dataSet->updateAttributeColors();
2174 myViewNet->updateCursor();
2176 myViewNet->updateDataModeSpecificControls();
2203 menuCheckToggleGrid(nullptr),
2204 menuCheckToggleDrawJunctionShape(nullptr),
2205 menuCheckDrawSpreadVehicles(nullptr),
2206 menuCheckShowDemandElements(nullptr),
2207 menuCheckSelectEdges(nullptr),
2208 menuCheckShowConnections(nullptr),
2209 menuCheckHideConnections(nullptr),
2210 menuCheckShowAdditionalSubElements(nullptr),
2211 menuCheckShowTAZElements(nullptr),
2212 menuCheckExtendSelection(nullptr),
2213 menuCheckChangeAllPhases(nullptr),
2214 menuCheckWarnAboutMerge(nullptr),
2215 menuCheckShowJunctionBubble(nullptr),
2216 menuCheckMoveElevation(nullptr),
2217 menuCheckChainEdges(nullptr),
2218 menuCheckAutoOppositeEdge(nullptr),
2219 myViewNet(viewNet) {
2226 menuCheckToggleGrid =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2227 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2228 (
"\tShow grid\tShow grid and restrict movement to the grid - define grid size in visualization options. (Ctrl+G)"),
2231 menuCheckToggleGrid->setChecked(
false);
2232 menuCheckToggleGrid->create();
2234 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2235 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2236 (
"\tHide junction shape\tToggle hidding junction shape. (Ctrl+J)"),
2239 menuCheckToggleDrawJunctionShape->setChecked(
false);
2240 menuCheckToggleDrawJunctionShape->create();
2242 menuCheckDrawSpreadVehicles =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2243 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2244 (
"\tDraw vehicles spread in lane or depart position\tDraw vehicles spread in lane or in depart position."),
2247 menuCheckDrawSpreadVehicles->setChecked(
false);
2248 menuCheckDrawSpreadVehicles->create();
2250 menuCheckShowDemandElements =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2251 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2252 (
"\tShow demand elements\tToggle show demand elements."),
2255 menuCheckShowDemandElements->setChecked(
false);
2256 menuCheckShowDemandElements->create();
2258 menuCheckSelectEdges =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2259 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2260 (
"\tclicks target lanes\tToggle whether clicking should inspect/select/delete lanes instead of edges."),
2263 menuCheckSelectEdges->create();
2265 menuCheckShowConnections =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2266 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2267 (
"\tShow connections over junctions\tToggle show connections over junctions."),
2270 menuCheckShowConnections->setChecked(myViewNet->getVisualisationSettings().showLane2Lane);
2271 menuCheckShowConnections->create();
2273 menuCheckHideConnections =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2274 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2275 (
"\tHide connections\tToggle hide connections."),
2278 menuCheckHideConnections->setChecked(
false);
2279 menuCheckHideConnections->create();
2281 menuCheckShowAdditionalSubElements =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2282 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2283 (
"\tShow additional sub-elements\tToggle show additional sub-elements."),
2286 menuCheckShowAdditionalSubElements->setChecked(
false);
2287 menuCheckShowAdditionalSubElements->create();
2289 menuCheckShowTAZElements =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2290 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2291 (
"\tShow TAZ elements\tToggle show TAZ elements."),
2294 menuCheckShowTAZElements->setChecked(
false);
2295 menuCheckShowTAZElements->create();
2297 menuCheckExtendSelection =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2298 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2299 (
"\tAutomatic select junctions\tToggle whether selecting multiple edges should automatically select their junctions."),
2302 menuCheckExtendSelection->setChecked(
true);
2303 menuCheckExtendSelection->create();
2305 menuCheckChangeAllPhases =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2306 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2307 (
"\tApply state to all phases\tToggle whether clicking should apply state changes to all phases of the current TLS plan."),
2310 menuCheckChangeAllPhases->setChecked(
false);
2311 menuCheckChangeAllPhases->create();
2313 menuCheckWarnAboutMerge =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2314 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2315 (
"\tAutomatic merging junction\tToggle ask for confirmation before merging junction."),
2318 menuCheckWarnAboutMerge->create();
2320 menuCheckShowJunctionBubble =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2321 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2322 (
"\tShow bubbles\tToggle show bubbles over junctions shapes."),
2325 menuCheckShowJunctionBubble->setChecked(
false);
2326 menuCheckShowJunctionBubble->create();
2328 menuCheckMoveElevation =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2329 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2330 (
"\tMove elevation\tApply mouse movement to elevation instead of x,y position."),
2333 menuCheckMoveElevation->setChecked(
false);
2334 menuCheckMoveElevation->create();
2336 menuCheckChainEdges =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2337 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2338 (
"\tEdge chain mode\tCreate consecutive edges with a single click (hit ESC to cancel chain)."),
2341 menuCheckChainEdges->setChecked(
false);
2342 menuCheckChainEdges->create();
2344 menuCheckAutoOppositeEdge =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2345 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2346 (
"\tEdge opposite direction\tAutomatically create an edge in the opposite direction."),
2349 menuCheckAutoOppositeEdge->setChecked(
false);
2350 menuCheckAutoOppositeEdge->create();
2353 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
2359 menuCheckToggleGrid->hide();
2360 menuCheckToggleDrawJunctionShape->hide();
2361 menuCheckDrawSpreadVehicles->hide();
2362 menuCheckShowDemandElements->hide();
2363 menuCheckSelectEdges->hide();
2364 menuCheckShowConnections->hide();
2365 menuCheckHideConnections->hide();
2366 menuCheckShowAdditionalSubElements->hide();
2367 menuCheckShowTAZElements->hide();
2368 menuCheckExtendSelection->hide();
2369 menuCheckChangeAllPhases->hide();
2370 menuCheckWarnAboutMerge->hide();
2371 menuCheckShowJunctionBubble->hide();
2372 menuCheckMoveElevation->hide();
2373 menuCheckChainEdges->hide();
2374 menuCheckAutoOppositeEdge->hide();
2376 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->show();
2383 if (menuCheckToggleGrid->shown()) {
2384 commands.push_back(menuCheckToggleGrid);
2386 if (menuCheckToggleDrawJunctionShape->shown()) {
2387 commands.push_back(menuCheckToggleDrawJunctionShape);
2389 if (menuCheckDrawSpreadVehicles->shown()) {
2390 commands.push_back(menuCheckDrawSpreadVehicles);
2392 if (menuCheckShowDemandElements->shown()) {
2393 commands.push_back(menuCheckShowDemandElements);
2395 if (menuCheckSelectEdges->shown()) {
2396 commands.push_back(menuCheckSelectEdges);
2398 if (menuCheckShowConnections->shown()) {
2399 commands.push_back(menuCheckShowConnections);
2401 if (menuCheckHideConnections->shown()) {
2402 commands.push_back(menuCheckHideConnections);
2404 if (menuCheckShowAdditionalSubElements->shown()) {
2405 commands.push_back(menuCheckShowAdditionalSubElements);
2407 if (menuCheckShowTAZElements->shown()) {
2408 commands.push_back(menuCheckShowTAZElements);
2410 if (menuCheckExtendSelection->shown()) {
2411 commands.push_back(menuCheckExtendSelection);
2413 if (menuCheckChangeAllPhases->shown()) {
2414 commands.push_back(menuCheckChangeAllPhases);
2416 if (menuCheckWarnAboutMerge->shown()) {
2417 commands.push_back(menuCheckWarnAboutMerge);
2419 if (menuCheckShowJunctionBubble->shown()) {
2420 commands.push_back(menuCheckShowJunctionBubble);
2422 if (menuCheckMoveElevation->shown()) {
2423 commands.push_back(menuCheckMoveElevation);
2425 if (menuCheckChainEdges->shown()) {
2426 commands.push_back(menuCheckChainEdges);
2428 if (menuCheckAutoOppositeEdge->shown()) {
2429 commands.push_back(menuCheckAutoOppositeEdge);
2436 return (menuCheckDrawSpreadVehicles->amChecked() == TRUE);
2442 if (menuCheckShowDemandElements->shown()) {
2443 return (menuCheckShowDemandElements->amChecked() == TRUE);
2453 if (menuCheckSelectEdges->shown()) {
2454 return (menuCheckSelectEdges->amChecked() != TRUE);
2464 if (myViewNet->myEditModes.isCurrentSupermodeData()) {
2468 return (menuCheckHideConnections->amChecked() == FALSE);
2471 }
else if (myViewNet->myEditModes.isCurrentSupermodeNetwork() && menuCheckShowConnections->shown() ==
false) {
2474 return (myViewNet->getVisualisationSettings().showLane2Lane);
2481 if (!myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
2483 }
else if (menuCheckShowAdditionalSubElements->shown() ==
false) {
2486 return menuCheckShowAdditionalSubElements->amChecked();
2493 if (!myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
2495 }
else if (menuCheckShowTAZElements->shown() ==
false) {
2498 return menuCheckShowTAZElements->amChecked();
2505 if (menuCheckMoveElevation->shown()) {
2506 return (menuCheckMoveElevation->amChecked() == TRUE);
2517 menuCheckToggleGrid(nullptr),
2518 menuCheckToggleDrawJunctionShape(nullptr),
2519 menuCheckDrawSpreadVehicles(nullptr),
2520 menuCheckHideShapes(nullptr),
2521 menuCheckShowAllTrips(nullptr),
2522 menuCheckShowAllPersonPlans(nullptr),
2523 menuCheckLockPerson(nullptr),
2524 menuCheckShowAllContainerPlans(nullptr),
2525 menuCheckLockContainer(nullptr),
2526 menuCheckHideNonInspectedDemandElements(nullptr),
2527 menuCheckShowOverlappedRoutes(nullptr),
2529 myLockedPerson(nullptr),
2530 myLockedContainer(nullptr) {
2537 menuCheckToggleGrid =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2538 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2539 (
"\tShow grid\tShow grid and restrict movement to the grid - define grid size in visualization options. (Ctrl+G)"),
2542 menuCheckToggleGrid->setChecked(
false);
2543 menuCheckToggleGrid->create();
2545 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2546 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2547 (
"\tHide junction shape\tToggle hidding junction shape. (Ctrl+J)"),
2550 menuCheckToggleDrawJunctionShape->setChecked(
false);
2551 menuCheckToggleDrawJunctionShape->create();
2553 menuCheckDrawSpreadVehicles =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2554 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2555 (
"\tDraw vehicles spread/depart position\tDraw vehicles spread in lane or in depart position."),
2558 menuCheckDrawSpreadVehicles->setChecked(
false);
2559 menuCheckDrawSpreadVehicles->create();
2561 menuCheckHideShapes =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2562 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2563 (
"\tShow shapes\tToggle show shapes (Polygons and POIs)."),
2566 menuCheckHideShapes->setChecked(
false);
2567 menuCheckHideShapes->create();
2569 menuCheckShowAllTrips =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2570 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2571 (
"\tShow all trips\tToggle show all trips (requires updated demand - F5)."),
2574 menuCheckShowAllTrips->setChecked(
false);
2575 menuCheckShowAllTrips->create();
2577 menuCheckShowAllPersonPlans =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2578 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2579 (
"\tShow all person plans\tToggle show all person plans."),
2582 menuCheckShowAllPersonPlans->setChecked(
false);
2583 menuCheckShowAllPersonPlans->create();
2585 menuCheckLockPerson =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2586 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2587 (
"\tLock selected person\tToggle lock selected person."),
2590 menuCheckLockPerson->setChecked(
false);
2591 menuCheckLockPerson->create();
2593 menuCheckShowAllContainerPlans =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2594 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2595 (
"\tShow all containers plans\tToggle show all container plans."),
2598 menuCheckShowAllContainerPlans->setChecked(
false);
2599 menuCheckShowAllContainerPlans->create();
2601 menuCheckLockContainer =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2602 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2603 (
"\tLock selected container\tToggle lock selected container."),
2606 menuCheckLockContainer->setChecked(
false);
2607 menuCheckLockContainer->create();
2609 menuCheckHideNonInspectedDemandElements =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2610 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2611 (
"\tShow non-inspected demand elements\tToggle show non-inspected demand elements."),
2614 menuCheckHideNonInspectedDemandElements->setChecked(
false);
2615 menuCheckHideNonInspectedDemandElements->create();
2617 menuCheckShowOverlappedRoutes =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2618 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2619 (
"\tShow number of overlapped routes\tToggle show number of overlapped routes."),
2622 menuCheckShowOverlappedRoutes->setChecked(
false);
2623 menuCheckShowOverlappedRoutes->create();
2626 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
2632 menuCheckToggleGrid->hide();
2633 menuCheckToggleDrawJunctionShape->hide();
2634 menuCheckDrawSpreadVehicles->hide();
2635 menuCheckHideShapes->hide();
2636 menuCheckShowAllTrips->hide();
2637 menuCheckShowAllPersonPlans->hide();
2638 menuCheckLockPerson->hide();
2639 menuCheckShowAllContainerPlans->hide();
2640 menuCheckLockContainer->hide();
2641 menuCheckHideNonInspectedDemandElements->hide();
2642 menuCheckShowOverlappedRoutes->hide();
2644 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->show();
2651 if (menuCheckToggleGrid->shown()) {
2652 commands.push_back(menuCheckToggleGrid);
2654 if (menuCheckToggleDrawJunctionShape->shown()) {
2655 commands.push_back(menuCheckToggleDrawJunctionShape);
2657 if (menuCheckDrawSpreadVehicles->shown()) {
2658 commands.push_back(menuCheckDrawSpreadVehicles);
2660 if (menuCheckHideShapes->shown()) {
2661 commands.push_back(menuCheckHideShapes);
2663 if (menuCheckShowAllTrips->shown()) {
2664 commands.push_back(menuCheckShowAllTrips);
2666 if (menuCheckShowAllPersonPlans->shown() && menuCheckShowAllPersonPlans->isEnabled()) {
2667 commands.push_back(menuCheckShowAllPersonPlans);
2669 if (menuCheckLockPerson->shown() && menuCheckLockPerson->isEnabled()) {
2670 commands.push_back(menuCheckLockPerson);
2672 if (menuCheckShowAllContainerPlans->shown() && menuCheckShowAllContainerPlans->isEnabled()) {
2673 commands.push_back(menuCheckShowAllContainerPlans);
2675 if (menuCheckLockContainer->shown() && menuCheckLockContainer->isEnabled()) {
2676 commands.push_back(menuCheckLockContainer);
2678 if (menuCheckHideNonInspectedDemandElements->shown()) {
2679 commands.push_back(menuCheckHideNonInspectedDemandElements);
2681 if (menuCheckShowOverlappedRoutes->shown()) {
2682 commands.push_back(menuCheckShowOverlappedRoutes);
2689 return (menuCheckDrawSpreadVehicles->amChecked() == TRUE);
2695 if (menuCheckHideNonInspectedDemandElements->shown()) {
2697 if ((menuCheckHideNonInspectedDemandElements->amChecked() == FALSE) || (myViewNet->getInspectedAttributeCarriers().empty())) {
2700 }
else if (myViewNet->getInspectedAttributeCarriers().front()->getTagProperty().isDemandElement()) {
2701 if (myViewNet->isAttributeCarrierInspected(demandElement)) {
2707 if (myViewNet->isAttributeCarrierInspected(i)) {
2713 if (myViewNet->isAttributeCarrierInspected(i)) {
2733 if (menuCheckHideShapes->shown()) {
2734 return (menuCheckHideShapes->amChecked() == FALSE);
2743 return (menuCheckShowAllTrips->amChecked() == TRUE);
2749 if (menuCheckShowAllPersonPlans->isEnabled()) {
2750 return (menuCheckShowAllPersonPlans->amChecked() == TRUE);
2759 myLockedPerson = person;
2765 myLockedPerson =
nullptr;
2771 return myLockedPerson;
2777 if (menuCheckShowAllContainerPlans->isEnabled()) {
2778 return (menuCheckShowAllContainerPlans->amChecked() == TRUE);
2787 myLockedContainer = container;
2793 myLockedContainer =
nullptr;
2799 if (menuCheckShowOverlappedRoutes->isEnabled()) {
2800 return (menuCheckShowOverlappedRoutes->amChecked() == TRUE);
2809 return myLockedContainer;
2817 menuCheckToggleDrawJunctionShape(nullptr),
2818 menuCheckShowAdditionals(nullptr),
2819 menuCheckShowShapes(nullptr),
2820 menuCheckShowDemandElements(nullptr),
2821 menuCheckToggleTAZRelDrawing(nullptr),
2822 menuCheckToggleTAZDrawFill(nullptr),
2823 menuCheckToggleTAZRelOnlyFrom(nullptr),
2824 menuCheckToggleTAZRelOnlyTo(nullptr),
2825 myViewNet(viewNet) {
2832 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2833 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2834 (
"\tHide junction shape\tToggle hidding junction shape. (Ctrl+J)"),
2837 menuCheckToggleDrawJunctionShape->setChecked(
false);
2838 menuCheckToggleDrawJunctionShape->create();
2840 menuCheckShowAdditionals =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2841 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2842 (
"\tShow additionals\tToggle show additionals."),
2845 menuCheckShowAdditionals->create();
2847 menuCheckShowShapes =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2848 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2849 (
"\tShow shapes\tToggle show shapes (Polygons and POIs)."),
2852 menuCheckShowShapes->create();
2854 menuCheckShowDemandElements =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2855 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2856 (
"\tShow demand elements\tToggle show demand elements."),
2859 menuCheckShowDemandElements->create();
2861 menuCheckToggleTAZRelDrawing =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2862 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2863 (
"\tDraw TAZREL drawing mode\tToggle draw TAZREL drawing mode."),
2866 menuCheckToggleTAZRelDrawing->create();
2868 menuCheckToggleTAZDrawFill =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2869 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2870 (
"\tToggle draw TAZ fill\tToggle draw TAZ fill"),
2873 menuCheckToggleTAZDrawFill->create();
2875 menuCheckToggleTAZRelOnlyFrom =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2876 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2877 (
"\tToggle draw TAZRel only from\tToggle draw TAZRel only from"),
2880 menuCheckToggleTAZRelOnlyFrom->create();
2882 menuCheckToggleTAZRelOnlyTo =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2883 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2884 (
"\tToggle draw TAZRel only to\tToggle draw TAZRel only to"),
2887 menuCheckToggleTAZRelOnlyTo->create();
2890 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
2896 menuCheckToggleDrawJunctionShape->hide();
2897 menuCheckShowAdditionals->hide();
2898 menuCheckShowShapes->hide();
2899 menuCheckShowDemandElements->hide();
2900 menuCheckToggleTAZRelDrawing->hide();
2901 menuCheckToggleTAZDrawFill->hide();
2902 menuCheckToggleTAZRelOnlyFrom->hide();
2903 menuCheckToggleTAZRelOnlyTo->hide();
2905 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->show();
2912 if (menuCheckToggleDrawJunctionShape->shown()) {
2913 commands.push_back(menuCheckToggleDrawJunctionShape);
2915 if (menuCheckShowAdditionals->shown()) {
2916 commands.push_back(menuCheckShowAdditionals);
2918 if (menuCheckShowShapes->shown()) {
2919 commands.push_back(menuCheckShowShapes);
2921 if (menuCheckShowDemandElements->shown()) {
2922 commands.push_back(menuCheckShowDemandElements);
2924 if (menuCheckToggleTAZRelDrawing->shown()) {
2925 commands.push_back(menuCheckToggleTAZRelDrawing);
2927 if (menuCheckToggleTAZDrawFill->shown()) {
2928 commands.push_back(menuCheckToggleTAZDrawFill);
2930 if (menuCheckToggleTAZRelOnlyFrom->shown()) {
2931 commands.push_back(menuCheckToggleTAZRelOnlyFrom);
2933 if (menuCheckToggleTAZRelOnlyTo->shown()) {
2934 commands.push_back(menuCheckToggleTAZRelOnlyTo);
2941 if (menuCheckShowAdditionals->shown()) {
2942 return (menuCheckShowAdditionals->amChecked() == TRUE);
2951 if (menuCheckShowShapes->shown()) {
2952 return (menuCheckShowShapes->amChecked() == TRUE);
2961 if (menuCheckShowDemandElements->shown()) {
2962 return (menuCheckShowDemandElements->amChecked() == TRUE);
2971 return (menuCheckToggleTAZRelDrawing->amChecked() != TRUE);
2977 if (menuCheckToggleTAZDrawFill->shown()) {
2978 return (menuCheckToggleTAZDrawFill->amChecked() != TRUE);
2987 if (menuCheckToggleTAZRelOnlyFrom->shown()) {
2988 return (menuCheckToggleTAZRelOnlyFrom->amChecked() != TRUE);
2997 if (menuCheckToggleTAZRelOnlyTo->shown()) {
2998 return (menuCheckToggleTAZRelOnlyTo->amChecked() != TRUE);
3010 myUpdateInterval(true),
3011 myGenericDataTypesComboBox(nullptr),
3012 myDataSetsComboBox(nullptr),
3013 myIntervalCheckBox(nullptr),
3014 myBeginTextField(nullptr),
3015 myEndTextField(nullptr),
3016 myParametersComboBox(nullptr) {
3023 FXLabel* genericDataLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3025 genericDataLabel->create();
3027 myGenericDataTypesComboBox =
new FXComboBox(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3029 myGenericDataTypesComboBox->create();
3031 myGenericDataTypesComboBox->appendItem(
"<all>");
3035 myGenericDataTypesComboBox->setNumVisible(myGenericDataTypesComboBox->getNumItems());
3037 FXLabel* dataSetLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3039 dataSetLabel->create();
3041 myDataSetsComboBox =
new FXComboBox(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3043 myDataSetsComboBox->create();
3045 myIntervalCheckBox =
new FXCheckButton(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3047 myIntervalCheckBox->create();
3049 myBeginTextField =
new FXTextField(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3051 myBeginTextField->create();
3053 myEndTextField =
new FXTextField(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3055 myEndTextField->create();
3057 FXLabel* parameterLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3059 parameterLabel->create();
3061 myParametersComboBox =
new FXComboBox(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3063 myParametersComboBox->create();
3065 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->recalc();
3072 updateIntervalBar();
3074 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->show();
3081 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->hide();
3088 if (myUpdateInterval && myViewNet->getNet()) {
3095 myParameters.clear();
3097 for (
const auto& dataSet : myViewNet->getNet()->getAttributeCarriers()->getDataSets()) {
3099 myDataSets.push_back(dataSet->getID());
3101 for (
const auto& interval : dataSet->getDataIntervalChildren()) {
3104 begin = interval.first;
3107 end = interval.first;
3110 for (
const auto& genericData : interval.second->getGenericDataChildren()) {
3112 for (
const auto& parameter : genericData->getParametersMap()) {
3113 myParameters.insert(parameter.first);
3119 const std::string previousDataSet = myDataSetsComboBox->getText().text();
3121 const std::string previousBegin = (myIntervalCheckBox->getCheck() == TRUE) ? myBeginTextField->getText().text() :
"";
3122 const std::string previousEnd = (myIntervalCheckBox->getCheck() == TRUE) ? myEndTextField->getText().text() :
"";
3124 const std::string previousParameter = myParametersComboBox->getText().text();
3126 myDataSetsComboBox->clearItems();
3127 myParametersComboBox->clearItems();
3129 myDataSetsComboBox->appendItem(
"<all>");
3130 myParametersComboBox->appendItem(
"<all>");
3132 for (
const auto& dataSet : myDataSets) {
3133 myDataSetsComboBox->appendItem(dataSet.c_str());
3136 myBeginTextField->setText(
toString(begin).c_str());
3137 myEndTextField->setText(
toString(end).c_str());
3139 for (
const auto& parameter : myParameters) {
3140 myParametersComboBox->appendItem(parameter.c_str());
3143 myDataSetsComboBox->setCurrentItem(0, FALSE);
3144 for (
int i = 0; i < myDataSetsComboBox->getNumItems(); i++) {
3145 if (myDataSetsComboBox->getItem(i).text() == previousDataSet) {
3146 myDataSetsComboBox->setCurrentItem(i);
3150 if (myIntervalCheckBox->getCheck() == TRUE) {
3151 myBeginTextField->setText(previousBegin.c_str());
3152 myEndTextField->setText(previousEnd.c_str());
3155 myParametersComboBox->setCurrentItem(0, FALSE);
3156 for (
int i = 0; i < myParametersComboBox->getNumItems(); i++) {
3157 if (myParametersComboBox->getItem(i).text() == previousParameter) {
3158 myParametersComboBox->setCurrentItem(i);
3162 if (myDataSetsComboBox->getNumItems() < 10) {
3163 myDataSetsComboBox->setNumVisible(myDataSetsComboBox->getNumItems());
3165 myDataSetsComboBox->setNumVisible(10);
3167 if (myParametersComboBox->getNumItems() < 10) {
3168 myParametersComboBox->setNumVisible(myParametersComboBox->getNumItems());
3170 myParametersComboBox->setNumVisible(10);
3176 enableIntervalBar();
3178 disableIntervalBar();
3181 myUpdateInterval =
false;
3188 myUpdateInterval =
true;
3194 if (myGenericDataTypesComboBox->isEnabled() && (myGenericDataTypesComboBox->getTextColor() == FXRGB(0, 0, 0))) {
3209 if (!myDataSetsComboBox->isEnabled() ||
3210 (myDataSetsComboBox->getCurrentItem() == 0) ||
3211 (myDataSetsComboBox->getTextColor() == FXRGB(255, 0, 0))) {
3221 if (!myIntervalCheckBox->isEnabled() || (myIntervalCheckBox->getCheck() == FALSE)) {
3224 return GNEAttributeCarrier::parse<double>(myBeginTextField->getText().text());
3231 if (!myIntervalCheckBox->isEnabled() || (myIntervalCheckBox->getCheck() == FALSE)) {
3234 return GNEAttributeCarrier::parse<double>(myEndTextField->getText().text());
3241 if (!myParametersComboBox->isEnabled() ||
3242 (myParametersComboBox->getCurrentItem() == 0) ||
3243 (myParametersComboBox->getTextColor() == FXRGB(255, 0, 0))) {
3246 return myParametersComboBox->getText().text();
3253 if ((myGenericDataTypesComboBox->getText() ==
"<all>") ||
3257 myGenericDataTypesComboBox->setTextColor(FXRGB(0, 0, 0));
3259 myGenericDataTypesComboBox->setTextColor(FXRGB(255, 0, 0));
3262 myViewNet->updateViewNet();
3269 if (std::find(myDataSets.begin(), myDataSets.end(), myDataSetsComboBox->getText().text()) != myDataSets.end()) {
3270 myDataSetsComboBox->setTextColor(FXRGB(0, 0, 0));
3272 myDataSetsComboBox->setTextColor(FXRGB(255, 0, 0));
3275 myViewNet->updateViewNet();
3282 if (myIntervalCheckBox->isEnabled() && (myIntervalCheckBox->getCheck() == TRUE)) {
3283 myBeginTextField->enable();
3284 myEndTextField->enable();
3286 myBeginTextField->disable();
3287 myEndTextField->disable();
3290 myViewNet->updateViewNet();
3296 if (myBeginTextField->getText().empty()) {
3297 myBeginTextField->setText(
toString(myViewNet->getNet()->getDataSetIntervalMinimumBegin()).c_str());
3298 myBeginTextField->setTextColor(FXRGB(0, 0, 0));
3299 }
else if (GNEAttributeCarrier::canParse<double>(myBeginTextField->getText().text())) {
3300 myBeginTextField->setTextColor(FXRGB(0, 0, 0));
3302 myBeginTextField->setTextColor(FXRGB(255, 0, 0));
3305 myViewNet->updateViewNet();
3311 if (myEndTextField->getText().empty()) {
3312 myEndTextField->setText(
toString(myViewNet->getNet()->getDataSetIntervalMaximumEnd()).c_str());
3313 myEndTextField->setTextColor(FXRGB(0, 0, 0));
3314 }
else if (GNEAttributeCarrier::canParse<double>(myEndTextField->getText().text())) {
3315 myEndTextField->setTextColor(FXRGB(0, 0, 0));
3317 myEndTextField->setTextColor(FXRGB(255, 0, 0));
3320 myViewNet->updateViewNet();
3327 if (myParameters.count(myParametersComboBox->getText().text()) > 0) {
3328 myParametersComboBox->setTextColor(FXRGB(0, 0, 0));
3330 myParametersComboBox->setTextColor(FXRGB(255, 0, 0));
3333 myViewNet->updateViewNet();
3341 myGenericDataTypesComboBox->enable();
3342 myDataSetsComboBox->enable();
3343 myIntervalCheckBox->enable();
3344 if (myIntervalCheckBox->getCheck() == TRUE) {
3345 myBeginTextField->enable();
3346 myEndTextField->enable();
3348 myBeginTextField->disable();
3349 myEndTextField->disable();
3351 myParametersComboBox->enable();
3358 myGenericDataTypesComboBox->disable();
3359 myDataSetsComboBox->disable();
3360 myIntervalCheckBox->disable();
3361 myBeginTextField->disable();
3362 myEndTextField->disable();
3363 myParametersComboBox->disable();
3371 inspectButton(nullptr),
3372 deleteButton(nullptr),
3373 selectButton(nullptr),
3374 myViewNet(viewNet) {
3381 inspectButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3382 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3383 "\tSet inspect mode\tMode for inspect elements and change their attributes. (I)",
3385 inspectButton->create();
3387 deleteButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3388 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3389 "\tSet delete mode\tMode for delete elements. (D)",
3391 deleteButton->create();
3393 selectButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3394 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3395 "\tSet select mode\tMode for select elements. (S)",
3397 selectButton->create();
3399 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
3405 inspectButton->show();
3406 deleteButton->show();
3407 selectButton->show();
3413 inspectButton->hide();
3414 deleteButton->hide();
3415 selectButton->hide();
3421 inspectButton->setChecked(
false);
3422 deleteButton->setChecked(
false);
3423 selectButton->setChecked(
false);
3429 inspectButton->update();
3430 deleteButton->update();
3431 selectButton->update();
3439 moveNetworkElementsButton(nullptr),
3440 createEdgeButton(nullptr),
3441 connectionButton(nullptr),
3442 trafficLightButton(nullptr),
3443 additionalButton(nullptr),
3444 crossingButton(nullptr),
3446 shapeButton(nullptr),
3447 prohibitionButton(nullptr),
3448 wireButton(nullptr),
3449 myViewNet(viewNet) {
3456 moveNetworkElementsButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3457 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3458 "\tSet move mode\tMode for move elements. (M)",
3460 moveNetworkElementsButton->create();
3462 createEdgeButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3463 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3464 "\tSet create edge mode\tMode for creating junction and edges. (E)",
3466 createEdgeButton->create();
3468 connectionButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3469 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3470 "\tSet connection mode\tMode for edit connections between lanes. (C)",
3472 connectionButton->create();
3474 prohibitionButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3475 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3476 "\tSet prohibition mode\tMode for editing connection prohibitions. (H)",
3478 prohibitionButton->create();
3480 trafficLightButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3481 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3482 "\tSet traffic light mode\tMode for edit traffic lights over junctions. (T)",
3484 trafficLightButton->create();
3486 additionalButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3487 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3488 "\tSet additional mode\tMode for adding additional elements. (A)",
3490 additionalButton->create();
3492 crossingButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3493 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3494 "\tSet crossing mode\tMode for creating crossings between edges. (R)",
3496 crossingButton->create();
3498 TAZButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3499 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3500 "\tSet TAZ mode\tMode for creating Traffic Assignment Zones. (Z)",
3502 TAZButton->create();
3504 shapeButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3505 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3506 "\tSet polygon mode\tMode for creating polygons and POIs. (P)",
3508 shapeButton->create();
3510 wireButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3511 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3512 "\tSet wire mode\tMode for editing wires. (W)",
3514 wireButton->create();
3516 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
3522 moveNetworkElementsButton->show();
3523 createEdgeButton->show();
3524 connectionButton->show();
3525 trafficLightButton->show();
3526 additionalButton->show();
3527 crossingButton->show();
3529 shapeButton->show();
3530 prohibitionButton->show();
3537 moveNetworkElementsButton->hide();
3538 createEdgeButton->hide();
3539 connectionButton->hide();
3540 trafficLightButton->hide();
3541 additionalButton->hide();
3542 crossingButton->hide();
3544 shapeButton->hide();
3545 prohibitionButton->hide();
3552 moveNetworkElementsButton->setChecked(
false);
3553 createEdgeButton->setChecked(
false);
3554 connectionButton->setChecked(
false);
3555 trafficLightButton->setChecked(
false);
3556 additionalButton->setChecked(
false);
3557 crossingButton->setChecked(
false);
3558 TAZButton->setChecked(
false);
3559 shapeButton->setChecked(
false);
3560 prohibitionButton->setChecked(
false);
3561 wireButton->setChecked(
false);
3567 moveNetworkElementsButton->update();
3568 createEdgeButton->update();
3569 connectionButton->update();
3570 trafficLightButton->update();
3571 additionalButton->update();
3572 crossingButton->update();
3573 TAZButton->update();
3574 shapeButton->update();
3575 prohibitionButton->update();
3576 wireButton->update();
3584 moveDemandElementsButton(nullptr),
3585 routeButton(nullptr),
3586 vehicleButton(nullptr),
3587 typeButton(nullptr),
3588 stopButton(nullptr),
3589 personButton(nullptr),
3590 personPlanButton(nullptr),
3591 containerButton(nullptr),
3592 containerPlanButton(nullptr),
3593 myViewNet(viewNet) {
3600 moveDemandElementsButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3601 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3602 "\tSet move mode\tMode for move elements. (M)",
3604 moveDemandElementsButton->create();
3606 routeButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3607 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3608 "\tCreate route mode\tMode for creating routes. (R)",
3610 routeButton->create();
3612 vehicleButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3613 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3614 "\tCreate vehicle mode\tMode for creating vehicles. (V)",
3616 vehicleButton->create();
3618 typeButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3619 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3620 "\tCreate type mode\tMode for creating types (vehicles, person and containers). (T)",
3622 typeButton->create();
3624 stopButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3625 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3626 "\tCreate stop mode\tMode for creating stops. (A)",
3628 stopButton->create();
3630 personButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3631 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3632 "\tCreate person mode\tMode for creating persons. (P)",
3634 personButton->create();
3636 personPlanButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3637 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3638 "\tCreate person plan mode\tMode for creating person plans. (C)",
3640 personPlanButton->create();
3642 containerButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3643 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3644 "\tCreate container mode\tMode for creating containers. (P)",
3646 containerButton->create();
3648 containerPlanButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3649 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3650 "\tCreate container plan mode\tMode for creating container plans. (C)",
3652 containerPlanButton->create();
3654 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
3660 moveDemandElementsButton->show();
3661 routeButton->show();
3662 vehicleButton->show();
3665 personButton->show();
3666 personPlanButton->show();
3667 containerButton->show();
3668 containerPlanButton->show();
3674 moveDemandElementsButton->hide();
3675 routeButton->hide();
3676 vehicleButton->hide();
3679 personButton->hide();
3680 personPlanButton->hide();
3681 containerButton->hide();
3682 containerPlanButton->hide();
3688 moveDemandElementsButton->setChecked(
false);
3689 routeButton->setChecked(
false);
3690 vehicleButton->setChecked(
false);
3691 typeButton->setChecked(
false);
3692 stopButton->setChecked(
false);
3693 personButton->setChecked(
false);
3694 personPlanButton->setChecked(
false);
3695 containerButton->setChecked(
false);
3696 containerPlanButton->setChecked(
false);
3702 moveDemandElementsButton->update();
3703 routeButton->update();
3704 vehicleButton->update();
3705 typeButton->update();
3706 stopButton->update();
3707 personButton->update();
3708 personPlanButton->update();
3709 containerButton->update();
3710 containerPlanButton->update();
3718 edgeDataButton(nullptr),
3719 edgeRelDataButton(nullptr),
3720 TAZRelDataButton(nullptr),
3721 myViewNet(viewNet) {
3728 edgeDataButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3729 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3730 "\tCreate edge data mode\tMode for creating edge datas. (E)",
3732 edgeDataButton->create();
3734 edgeRelDataButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3735 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3736 "\tCreate edge relation data mode\tMode for creating edge relation datas. (R)",
3738 edgeRelDataButton->create();
3740 TAZRelDataButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3741 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3742 "\tCreate TAZ relation data mode\tMode for creating TAZ relation datas. (Z)",
3745 TAZRelDataButton->create();
3747 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
3753 edgeDataButton->show();
3754 edgeRelDataButton->show();
3755 TAZRelDataButton->show();
3761 edgeDataButton->hide();
3762 edgeRelDataButton->hide();
3763 TAZRelDataButton->hide();
3769 edgeDataButton->setChecked(
false);
3770 edgeRelDataButton->setChecked(
false);
3771 TAZRelDataButton->setChecked(
false);
3777 edgeDataButton->update();
3778 edgeRelDataButton->update();
3779 TAZRelDataButton->update();
3788 myEditedNetworkElement(nullptr),
3795 if (element && (myEditedNetworkElement ==
nullptr)) {
3797 myPreviousNetworkEditMode = myViewNet->myEditModes.networkEditMode;
3801 myEditedNetworkElement = element;
3805 myViewNet->updateViewNet();
3813 if (myEditedNetworkElement !=
nullptr) {
3815 myEditedNetworkElement->setShapeEdited(
false);
3817 myEditedNetworkElement =
nullptr;
3819 if (myViewNet->myEditModes.networkEditMode != myPreviousNetworkEditMode) {
3820 myViewNet->myEditModes.setNetworkEditMode(myPreviousNetworkEditMode);
3829 if (myEditedNetworkElement !=
nullptr) {
3834 stopEditCustomShape();
3841 return myEditedNetworkElement;
3850 const Position viewPosition,
const double exaggeration,
const double size,
3851 const double offsetx,
const double offsety) {
3853 if (checkDrawing(AC, type, exaggeration)) {
3859 glTranslated(offsetx, offsety, 0);
3861 glRotated(180, 0, 0, 1);
3882 if (exaggeration == 0) {
3886 if (viewNet->getEditModes().isCurrentSupermodeNetwork() &&
3901 if (s.drawForPositionSelection || s.drawForRectangleSelection) {
3905 if (!s.drawDetail(s.detailSettings.lockIcon, exaggeration)) {
3916const std::vector<RGBColor>&
3941 }
else if (value >= max) {
3945 const double procent = ((value - min) * 100) / (max - min);
3949 }
else if (procent >= 100) {
3959std::vector<GUIGlObject*>
3961 std::vector<GUIGlObject*> filteredGLObjects;
3962 if (GLObjects.size() > 0) {
3963 const auto firstLayer = GLObjects.front()->getType();
3964 for (
const auto& GLObject : GLObjects) {
3966 (GLO_RIDE <= GLObject->getType()) && (GLObject->getType() <=
GLO_TRANSHIP)) {
3967 filteredGLObjects.push_back(GLObject);
3970 filteredGLObjects.push_back(GLObject);
3972 (GLO_VEHICLE <= GLObject->getType()) && (GLObject->getType() <=
GLO_ROUTEFLOW)) {
3973 filteredGLObjects.push_back(GLObject);
3975 (GLO_PERSON <= GLObject->getType()) && (GLObject->getType() <=
GLO_PERSONFLOW)) {
3976 filteredGLObjects.push_back(GLObject);
3978 (GLO_CONTAINER <= GLObject->getType()) && (GLObject->getType() <=
GLO_CONTAINERFLOW)) {
3979 filteredGLObjects.push_back(GLObject);
3980 }
else if (GLObject->getType() == firstLayer) {
3981 filteredGLObjects.push_back(GLObject);
3985 return filteredGLObjects;
DataEditMode
@brie 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_A_MODE_ADDITIONAL_STOP
hotkey for mode editing additionals AND stops
@ 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_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_SAVEALLELEMENTS
save all element
@ MID_GNE_INTERVALBAR_BEGIN
begin changed in InterbalBar
@ MID_GNE_DATAVIEWOPTIONS_TAZRELONLYTO
toggle draw TAZRel only to
@ MID_HOTKEY_M_MODE_MOVE
hotkey for mode moving element
@ 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_GNE_NETWORKVIEWOPTIONS_ASKFORMERGE
ask before merging junctions
@ 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_GNE_NETWORKVIEWOPTIONS_CHAINEDGES
create edges in chain mode
@ MID_GNE_DATAVIEWOPTIONS_SHOWDEMANDELEMENTS
show demand elements
@ MID_HOTKEY_H_MODE_PROHIBITION_CONTAINERPLAN
hotkey for mode prohibition AND container plan
@ 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_SELECT
hotkey for mode selecting objects
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWSUBADDITIONALS
show sub-additionals
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWALLCONTAINERPLANS
show all container plans
@ MID_HOTKEY_F4_SUPERMODE_DATA
select data supermode in NETEDIT
@ 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_HOTKEY_W_MODE_WIRE
hotkey for mode editing overhead wires
@ MID_GNE_DATAVIEWOPTIONS_TAZDRAWFILL
toggle draw TAZ fill
@ MID_HOTKEY_D_MODE_DELETE
hotkey for mode deleting things
@ 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_C_MODE_CONNECT_PERSONPLAN
hotkey for mode connecting lanes ABD person plan
@ MID_GNE_DEMANDVIEWOPTIONS_HIDENONINSPECTED
hide non-inspected demand element
@ MID_HOTKEY_CTRL_SHIFT_A_SAVEADDITIONALS
Save Additional Elements.
@ MID_GNE_INTERVALBAR_GENERICDATATYPE
generic data selected
@ MID_HOTKEY_G_MODE_CONTAINER
hotkey for mode container
@ 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_GNE_INTERVALBAR_DATASET
data set selected
@ MID_HOTKEY_F2_SUPERMODE_NETWORK
select network supermode in NETEDIT
@ MID_GNE_DEMANDVIEWOPTIONS_LOCKCONTAINER
lock container
@ MID_GNE_NETWORKVIEWOPTIONS_SELECTEDGES
select edges
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWTRIPS
show all trips
@ MID_GNE_NETWORKVIEWOPTIONS_TOGGLEGRID
show grid
@ MID_GNE_INTERVALBAR_LIMITED
enable/disable show data elements by interval
@ MID_HOTKEY_P_MODE_POLYGON_PERSON
hotkey for mode creating polygons
#define GUIDesignComboBoxWidth180
comboBox with thick frame, width 180
#define GUIDesignComboBoxNCol
number of column of every combo box
#define GUIDesignLabelAttribute
label extended over the matrix column with thick frame
#define GUIDesignButtonToolbar
little button with icon placed in navigation toolbar
#define GUIDesignTextFieldNCol
Num of column of text field.
#define GUIDesignMFXCheckableButtonSquare
#define GUIDesignTextFielWidth50Real
text field with thick frame and width 50 and limited to doubles
#define GUIDesignMFXCheckableButtonSupermode
checkable button with icon placed in navigation toolbar for supermodes
#define GUIDesignCheckButtonAttribute
checkButton without thick extended over the frame used for attributes
@ GLO_EDGERELDATA
edge relation data
@ GLO_TAZRELDATA
TAZ relation data.
@ GLO_WALKINGAREA
a walkingArea
@ GLO_STOP_CONTAINER
a container stop
@ GLO_TESTELEMENT
test element (used in NETEDIT)
@ GLO_TRANSHIP
a container tranship
@ 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_CONNECTION
a connection
@ GLO_ADDITIONALELEMENT
reserved GLO type for packing all additionals elements
@ GLO_PERSONTRIP
a person trip
@ GLO_TRANSPORT
a container transport
@ GLO_NETWORK
The network - empty.
@ GLO_RECTANGLESELECTION
rectangle selection shape (used in NETEDIT)
@ GLO_NETWORKELEMENT
reserved GLO type to pack all network elements
@ 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)
@ DATAMODE_CHECKBOX_SHOWADDITIONALS
@ NETWORKMODE_CHECKBOX_BUBBLES
@ DATAMODE_CHECKBOX_TAZRELONLYFROM
@ DEMANDMODE_CHECKBOX_HIDENONINSPECTEDDEMANDELEMENTS
@ NETWORKMODE_CHECKBOX_HIDECONNECTIONS
@ DEMANDMODE_CHECKBOX_SHOWTRIPS
@ COMMONMODE_CHECKBOX_TOGGLEDRAWJUNCTIONSHAPE
@ DATAMODE_CHECKBOX_SHOWSHAPES
@ NETWORKMODE_CHECKBOX_SELECTEDGES
@ COMMONMODE_CHECKBOX_SHOWDEMANDELEMENTS
@ DEMANDMODE_CHECKBOX_LOCKPERSON
@ NETWORKMODE_CHECKBOX_APPLYTOALLPHASES
@ DATAMODE_CHECKBOX_TAZRELONLYTO
@ NETWORKMODE_CHECKBOX_AUTOSELECTJUNCTIONS
@ DATAMODE_CHECKBOX_TAZRELDRAWING
@ NETWORKMODE_CHECKBOX_SHOWCONNECTIONS
@ DEMANDMODE_CHECKBOX_SHOWPERSONPLANS
@ DEMANDMODE_CHECKBOX_HIDESHAPES
@ DATAMODE_CHECKBOX_TAZDRAWFILL
@ NETWORKMODE_CHECKBOX_ELEVATION
@ COMMONMODE_CHECKBOX_SPREADVEHICLE
@ DEMANDMODE_CHECKBOX_LOCKCONTAINER
@ NETWORKMODE_CHECKBOX_SHOWSUBADDITIONALS
@ NETWORKMODE_CHECKBOX_SHOWTAZELEMENTS
@ NETWORKMODE_CHECKBOX_CHAIN
@ DEMANDMODE_CHECKBOX_SHOWOVERLAPPEDROUTES
@ NETWORKMODE_CHECKBOX_ASKFORMERGE
@ COMMONMODE_CHECKBOX_TOGGLEGRID
@ DEMANDMODE_CHECKBOX_SHOWCONTAINERPLANS
@ NETWORKMODE_CHECKBOX_TWOWAY
SumoXMLTag
Numbers representing SUMO-XML - element names.
@ SUMO_TAG_EDGEREL
a relation between two edges
@ SUMO_TAG_NOTHING
invalid tag
@ SUMO_TAG_MEANDATA_EDGE
an edge based mean data detector
@ 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_PARENT
parent of an additional element
@ GNE_ATTR_SELECTED
element is selected
const double INVALID_DOUBLE
#define UNUSED_PARAMETER(x)
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
A class that stores a 2D geometrical boundary.
void add(double x, double y, double z=0)
Makes the boundary include the given coordinate.
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
static void popMatrix()
pop matrix
static void pushMatrix()
push matrix
An Element which don't belong to GNENet but has influence in the simulation.
const std::string getID() const
get ID (all Attribute Carriers have one)
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
const GNETagProperties & getTagProperty() const
get tagProperty associated with this Attribute Carrier
GNENet * getNet() const
get pointer to net
virtual std::string getAttribute(SumoXMLAttr key) const =0
virtual GUIGlObject * getGUIGlObject()=0
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.
An Element which don't belong to GNENet but has influence in the simulation.
A road/street connecting two junctions (netedit-version)
bool isConvexAngle() const
check if edge makes a convex angle [0 - 180) degrees
NBEdge * getNBEdge() const
returns the internal NBEdge
An Element which don't belong to GNENet but has influence in the simulation.
An Element which don't belong to GNENet but has influence in the simulation.
const std::vector< GNEDemandElement * > & getChildDemandElements() const
return child demand elements
const std::vector< GNEDemandElement * > & getParentDemandElements() const
get parent demand elements
This object is responsible for drawing a shape and for supplying a a popup menu. Messages are routete...
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
static void commitMove(const GNEViewNet *viewNet, GNEMoveOperation *moveOperation, const GNEMoveOffset &offset, GNEUndoList *undoList)
commit move element for the given offset
static void moveElement(const GNEViewNet *viewNet, GNEMoveOperation *moveOperation, const GNEMoveOffset &offset)
move element the for given offset (note: offset can be X-Y-0, 0-0-Z or X-Y-Z)
GNEAdditional * retrieveAdditional(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named additional.
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
bool isShapeElement() const
return true if tag correspond to a shape
bool isTAZElement() const
return true if tag correspond to a TAZ element
bool isGenericData() const
return true if tag correspond to a generic data element
bool isNetworkElement() const
return true if tag correspond to a network element
bool isDataElement() const
return true if tag correspond to a data element
SumoXMLTag getTag() const
get Tag vinculated with this attribute Property
bool isDemandElement() const
return true if tag correspond to a demand element
bool isAdditionalElement() const
return true if tag correspond to an additional element (note: this include TAZ, shapes and wires)
void setDataSet()
set dataSet
void setParameter()
set parameter
std::string getParameter() const
get parameter
void hideIntervalBar()
hide all options menu checks
void setGenericDataType()
set generic data type
double getBegin() const
get begin
void showIntervalBar()
show interval option bar
void disableIntervalBar()
disable interval bar
void updateIntervalBar()
update interval bar
void buildIntervalBarElements()
build interval bar elements
GNEDataSet * getDataSet() const
get dataSet
IntervalBar(GNEViewNet *viewNet)
default constructor
void enableIntervalBar()
enable interval bar
void setInterval()
update limit by interval
double getEnd() const
get end
SumoXMLTag getGenericDataType() const
get generic data type
~OperationLocked()
destructor
Supermode getSupermode() const
get supermode
OperationLocked()
constructor
void updateLockMenuBar()
update lock inspect menuBar
bool isObjectLocked(GUIGlObjectType objectType, const bool selected) const
check if given GLObject is locked for inspect, select, delete and move
LockManager(GNEViewNet *viewNet)
constructor
std::map< GUIGlObjectType, OperationLocked > myLockedElements
map with locked elements
void updateFlags()
update flags
GNEViewNet * myViewNet
pointer to viewNet
ObjectsContainer()
constructor
std::vector< GNEEdgeRelData * > edgeRelDatas
vector with the clicked edge relation datas
std::vector< GNEWalkingArea * > walkingAreas
vector with the clicked walkingAreas
std::vector< GNENetworkElement * > networkElements
vector with the clicked network elements
std::vector< GNEEdge * > edges
vector with the clicked edges
std::vector< GNEGenericData * > genericDatas
vector with the clicked generic datas
std::vector< GNEJunction * > junctions
vector with the clicked junctions
std::vector< GNEConnection * > connections
vector with the clicked connections
std::vector< GNEEdgeData * > edgeDatas
vector with the clicked edge datas
std::vector< GNECrossing * > crossings
vector with the clicked crossings
std::vector< GNEPOI * > POIs
vector with the clicked POIs
std::vector< GNEDemandElement * > demandElements
vector with the clicked demand elements
std::vector< GNEAttributeCarrier * > attributeCarriers
vector with the clicked attribute carriers
std::vector< GNEPoly * > polys
vector with the clicked polys
std::vector< GNELane * > lanes
vector with the clicked lanes
std::vector< GNEInternalLane * > internalLanes
vector with the clicked internal lanes
std::vector< GNETAZ * > TAZs
vector with the clicked TAZ elements
std::vector< GNEAdditional * > additionals
vector with the clicked additional elements
std::vector< GUIGlObject * > GUIGlObjects
vector with the clicked GUIGlObjects
void clearElements()
clear elements
GNEPoly * getPolyFront() const
get front Poly or a pointer to nullptr
void updateObjectUnderCursor(const std::vector< GUIGlObject * > &GUIGlObjects)
update objects under cursor (Called only in onLeftBtnPress(...) function)
void updateNetworkElements(ObjectsContainer &container, GNEAttributeCarrier *AC)
update network elements
void sortGUIGlObjects(const std::vector< GUIGlObject * > &GUIGlObjects)
sort by altitude and update GUIGlObjects
const std::vector< GUIGlObject * > & getClickedGLObjects() const
get vector with clicked GL objects
GUIGlID getGlIDFront() const
get front GUI GL ID or a pointer to nullptr
void updateAdditionalElements(ObjectsContainer &container, GNEAttributeCarrier *AC)
update additional elements
GNEGenericData * getGenericDataElementFront() const
get generic data element or a pointer to nullptr
void swapLane2Edge()
swap lane to edge
GNENetworkElement * getNetworkElementFront() const
get front network element or a pointer to nullptr
GNEAttributeCarrier * getAttributeCarrierFront() const
get front attribute carrier or a pointer to nullptr
GNEInternalLane * getInternalLaneFront() const
get front internal lane or a pointer to nullptr
GNECrossing * getCrossingFront() const
get front crossing or a pointer to nullptr
void updateShapeElements(ObjectsContainer &container, GNEAttributeCarrier *AC)
update shape elements
void updateTAZElements(ObjectsContainer &container, GNEAttributeCarrier *AC)
update TAZ elements
GNELane * getLaneFront() const
get front lane or a pointer to nullptr
const std::vector< GNEDemandElement * > & getClickedDemandElements() const
get vector with clicked Demand Elements
void updateGenericDataElements(ObjectsContainer &container, GNEAttributeCarrier *AC)
update generic data elements
void updateGUIGlObjects(ObjectsContainer &container)
updateGUIGlObjects
GNEEdgeData * getEdgeDataElementFront() const
get edge data element or a pointer to nullptr
void updateDemandElements(ObjectsContainer &container, GNEAttributeCarrier *AC)
update demand elements
GNEAdditional * getAdditionalFront() const
get front additional element or a pointer to nullptr
GUIGlObjectType getGlTypeFront() const
get front GUI GL object type or a pointer to nullptr
GNEJunction * getJunctionFront() const
get front junction or a pointer to nullptr
void processGUIGlObjects()
process GL objects
GNEDemandElement * getDemandElementFront() const
get front demand element or a pointer to nullptr
const std::vector< GNELane * > & getLanes() const
get lanes
void filterLockedElements(const GNEViewNetHelper::LockManager &lockManager, std::vector< GUIGlObjectType > forcedIgnoredTiped={})
filter locked elements
void updateAttributeCarriers(ObjectsContainer &container, GNEAttributeCarrier *AC)
update attribute carrier elements
GNEEdge * getEdgeFront() const
get front edge or a pointer to nullptr
ObjectsUnderCursor()
default constructor
GNEWalkingArea * getWalkingAreaFront() const
get front walkingArea or a pointer to nullptr
GUIGlObject * getGUIGlObjectFront() const
get front attribute carrier or a pointer to nullptr
GNETAZ * getTAZFront() const
get front TAZ or a pointer to nullptr
const std::vector< GNEAttributeCarrier * > & getClickedAttributeCarriers() const
get vector with clicked ACs
GNEEdgeRelData * getEdgeRelDataElementFront() const
get edge rel data element or a pointer to nullptr
GNEConnection * getConnectionFront() const
get front connection or a pointer to nullptr
GNEPOI * getPOIFront() const
get front POI or a pointer to nullptr
GNELane * getLaneFrontNonLocked() const
get front lane or a pointer to nullptr checking if is locked
This object is responsible for drawing a shape and for supplying a a popup menu. Messages are routete...
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
const GUIVisualizationSettings & getVisualisationSettings() const
get visualization settings (read only)
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.
const PositionVector & getGeometry() const
Returns the geometry of the edge.
A storage for options typed value containers)
const StringVector & getStringVector(const std::string &name) const
Returns the list of string-value of the named option (only for Option_StringVector)
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
Boundary getBoxBoundary() const
Returns a boundary enclosing this list of lines.
static const RGBColor BLUE
static const RGBColor YELLOW
static const RGBColor MAGENTA
double getShapeLayer() const
Returns the layer of the Shape.
struct for processing menu commands
MFXMenuCheckIcon * menuCheckLockConnections
menu check to lock connections
MFXMenuCheckIcon * menuCheckLockPersonTrip
menu check to lock personTrips
MFXMenuCheckIcon * menuCheckLockPersons
menu check to lock persons
MFXMenuCheckIcon * menuCheckLockVehicles
menu check to lock vehicles
MFXMenuCheckIcon * menuCheckLockCrossings
menu check to lock crossings
MFXMenuCheckIcon * menuCheckLockRoutes
MFXMenuCheckIcon * menuCheckLockTAZs
menu check to lock TAZs
MFXMenuCheckIcon * menuCheckLockWalk
menu check to lock walks
MFXMenuCheckIcon * menuCheckLockEdgeTAZRels
menu check to lock edgeTAZRels
MFXMenuCheckIcon * menuCheckLockJunction
MFXMenuCheckIcon * menuCheckLockWires
menu check to lock Wires
MFXMenuCheckIcon * menuCheckLockPOIs
menu check to lock POIs
MFXMenuCheckIcon * menuCheckLockPolygons
menu check to lock polygons
MFXMenuCheckIcon * menuCheckLockWalkingAreas
menu check to lock walkingAreas
MFXMenuCheckIcon * menuCheckLockEdgeDatas
MFXMenuCheckIcon * menuCheckLockEdges
menu check to lock edges
MFXMenuCheckIcon * menuCheckLockRides
menu check to lock rides
MFXMenuCheckIcon * menuCheckLockContainers
menu check to lock containers
MFXMenuCheckIcon * 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 * 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 isCurrentSupermodeDemand() const
@check if current supermode is Demand
void setDemandEditMode(DemandEditMode demandMode, const bool force=false)
set Demand edit mode
EditModes(GNEViewNet *viewNet, const bool newNet)
default constructor
bool isCurrentSupermodeData() const
@check if current supermode is Data
bool isCurrentSupermodeNetwork() const
@check if current supermode is Network
void setSupermode(Supermode supermode, const bool force)
set supermode
void setNetworkEditMode(NetworkEditMode networkMode, const bool force=false)
set Network edit mode
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 commitEditedShape()
save edited shape
void startEditCustomShape(GNENetworkElement *element)
start edit custom shape
static void drawLockIcon(const GNEAttributeCarrier *AC, GUIGlObjectType type, const Position viewPosition, const double exaggeration, const double size=0.5, const double offsetx=0, const double offsety=0)
draw lock icon
static bool checkDrawing(const GNEAttributeCarrier *AC, GUIGlObjectType type, const double exaggeration)
check if icon can be drawn
void calculateJunctionSelection()
calculate junction selection
MoveMultipleElementValues(GNEViewNet *viewNet)
constructor
const GNEMoveOffset calculateMoveOffset() const
calculate move offset
void moveSelection(const bool mouseLeftButtonPressed)
move selection
void beginMoveSelection()
begin move selection
bool isMovingSelection() const
check if currently there is element being moved
bool isMovingSelectedEdge() const
flag for moving edge
void finishMoveSelection()
finish moving selection
void calculateEdgeSelection(const GNEEdge *clickedEdge)
calculate edge selection
double getEdgeOffset() const
edge offset
void resetMovingSelectedEdge()
reset flag for moving edge
void finishMoveSingleElement()
finish moving single elements in Network AND Demand mode
void moveSingleElement(const bool mouseLeftButtonPressed)
move single element in Network AND Demand mode
MoveSingleElementValues(GNEViewNet *viewNet)
constructor
bool beginMoveSingleElementNetworkMode()
begin move single element in Network mode
bool beginMoveNetworkElementShape()
begin move network elementshape
bool beginMoveSingleElementDemandMode()
begin move single element in Demand mode
const GNEMoveOffset calculateMoveOffset() const
calculate offset
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(GNEViewNet *viewNet)
default constructor
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 processShapeSelection(const PositionVector &shape)
process shape selection
void processRectangleSelection()
process rectangle Selection
std::vector< GNEEdge * > processEdgeRectangleSelection()
process rectangle Selection (only limited to Edges)
SelectingArea(GNEViewNet *viewNet)
default constructor
bool isTestingEnabled() const
check if testing mode is enabled
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