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 const auto filteredObjects = filterDuplicatedObjects(GUIGlObjects);
226 sortGUIGlObjects(filteredObjects);
228 processGUIGlObjects();
235 mySwapLane2edge =
true;
242 auto edgeACs = myEdgeObjects.attributeCarriers;
243 auto laneACs = myLaneObjects.attributeCarriers;
245 myEdgeObjects.clearElements();
246 myLaneObjects.clearElements();
248 for (
const auto& edgeAC : edgeACs) {
249 if (std::find(forcedIgnoredTiped.begin(), forcedIgnoredTiped.end(), edgeAC->getGUIGlObject()->getType()) != forcedIgnoredTiped.end()) {
251 }
else if (!lockManager.
isObjectLocked(edgeAC->getGUIGlObject()->getType(), edgeAC->isAttributeCarrierSelected())) {
252 myEdgeObjects.GUIGlObjects.push_back(edgeAC->getGUIGlObject());
255 for (
const auto& laneAC : laneACs) {
256 if (std::find(forcedIgnoredTiped.begin(), forcedIgnoredTiped.end(), laneAC->getGUIGlObject()->getType()) != forcedIgnoredTiped.end()) {
258 }
else if (!lockManager.
isObjectLocked(laneAC->getGUIGlObject()->getType(), laneAC->isAttributeCarrierSelected())) {
259 myLaneObjects.GUIGlObjects.push_back(laneAC->getGUIGlObject());
263 processGUIGlObjects();
270 std::set<std::pair<double, std::pair<double, GNEAttributeCarrier*> > > sortedDataElements;
272 for (
const auto& AC : myLaneObjects.attributeCarriers) {
273 if (AC->getTagProperty().isGenericData()) {
274 const double begin = GNEAttributeCarrier::parse<double>(AC->getAttribute(
SUMO_ATTR_BEGIN));
275 const double end = GNEAttributeCarrier::parse<double>(AC->getAttribute(
SUMO_ATTR_END));
276 sortedDataElements.insert(std::make_pair(begin, std::make_pair(end, AC)));
279 myLaneObjects.attributeCarriers.clear();
280 for (
const auto& sortedDataElement : sortedDataElements) {
281 myLaneObjects.attributeCarriers.push_back(sortedDataElement.second.second);
288 if (getGUIGlObjectFront()) {
289 return getGUIGlObjectFront()->getGlID();
298 if (getGUIGlObjectFront()) {
299 return getGUIGlObjectFront()->getType();
308 if (mySwapLane2edge) {
309 if (myEdgeObjects.attributeCarriers.size() > 0) {
310 return myEdgeObjects.GUIGlObjects.front();
315 if (myLaneObjects.attributeCarriers.size() > 0) {
316 return myLaneObjects.GUIGlObjects.front();
326 if (mySwapLane2edge) {
327 if (myEdgeObjects.attributeCarriers.size() > 0) {
328 return myEdgeObjects.attributeCarriers.front();
333 if (myLaneObjects.attributeCarriers.size() > 0) {
334 return myLaneObjects.attributeCarriers.front();
344 if (mySwapLane2edge) {
345 if (myEdgeObjects.networkElements.size() > 0) {
346 return myEdgeObjects.networkElements.front();
351 if (myLaneObjects.networkElements.size() > 0) {
352 return myLaneObjects.networkElements.front();
362 if (mySwapLane2edge) {
363 if (myEdgeObjects.additionals.size() > 0) {
364 return myEdgeObjects.additionals.front();
369 if (myLaneObjects.additionals.size() > 0) {
370 return myLaneObjects.additionals.front();
380 if (mySwapLane2edge) {
381 if (myEdgeObjects.demandElements.size() > 0) {
382 return myEdgeObjects.demandElements.front();
387 if (myLaneObjects.demandElements.size() > 0) {
388 return myLaneObjects.demandElements.front();
398 if (mySwapLane2edge) {
399 if (myEdgeObjects.genericDatas.size() > 0) {
400 return myEdgeObjects.genericDatas.front();
405 if (myLaneObjects.genericDatas.size() > 0) {
406 return myLaneObjects.genericDatas.front();
416 if (mySwapLane2edge) {
417 if (myEdgeObjects.junctions.size() > 0) {
418 return myEdgeObjects.junctions.front();
423 if (myLaneObjects.junctions.size() > 0) {
424 return myLaneObjects.junctions.front();
434 if (mySwapLane2edge) {
435 if (myEdgeObjects.edges.size() > 0) {
436 return myEdgeObjects.edges.front();
441 if (myLaneObjects.edges.size() > 0) {
442 return myLaneObjects.edges.front();
452 if (mySwapLane2edge) {
453 if (myEdgeObjects.lanes.size() > 0) {
454 return myEdgeObjects.lanes.front();
459 if (myLaneObjects.lanes.size() > 0) {
460 return myLaneObjects.lanes.front();
470 if (mySwapLane2edge) {
471 if (myEdgeObjects.lanes.size() > 0) {
472 for (
auto& lane : myEdgeObjects.lanes) {
473 if (!(lane->isAttributeCarrierSelected() || lane->getParentEdge()->isAttributeCarrierSelected()) ||
474 !myViewNet->getViewParent()->getGNEAppWindows()->getLockMenuCommands().menuCheckLockSelectedElements->getCheck()) {
484 if (myLaneObjects.lanes.size() > 0) {
485 for (
auto& lane : myLaneObjects.lanes) {
486 if (!(lane->isAttributeCarrierSelected() || lane->getParentEdge()->isAttributeCarrierSelected()) ||
487 !myViewNet->getViewParent()->getGNEAppWindows()->getLockMenuCommands().menuCheckLockSelectedElements->getCheck()) {
500const std::vector<GNELane*>&
502 if (mySwapLane2edge) {
503 return myEdgeObjects.lanes;
505 return myLaneObjects.lanes;
512 if (mySwapLane2edge) {
513 if (myEdgeObjects.crossings.size() > 0) {
514 return myEdgeObjects.crossings.front();
519 if (myLaneObjects.crossings.size() > 0) {
520 return myLaneObjects.crossings.front();
530 if (mySwapLane2edge) {
531 if (myEdgeObjects.walkingAreas.size() > 0) {
532 return myEdgeObjects.walkingAreas.front();
537 if (myLaneObjects.walkingAreas.size() > 0) {
538 return myLaneObjects.walkingAreas.front();
548 if (mySwapLane2edge) {
549 if (myEdgeObjects.connections.size() > 0) {
550 return myEdgeObjects.connections.front();
555 if (myLaneObjects.connections.size() > 0) {
556 return myLaneObjects.connections.front();
566 if (mySwapLane2edge) {
567 if (myEdgeObjects.internalLanes.size() > 0) {
568 return myEdgeObjects.internalLanes.front();
573 if (myLaneObjects.internalLanes.size() > 0) {
574 return myLaneObjects.internalLanes.front();
584 if (mySwapLane2edge) {
585 if (myEdgeObjects.POIs.size() > 0) {
586 return myEdgeObjects.POIs.front();
591 if (myLaneObjects.POIs.size() > 0) {
592 return myLaneObjects.POIs.front();
602 if (mySwapLane2edge) {
603 if (myEdgeObjects.polys.size() > 0) {
604 return myEdgeObjects.polys.front();
609 if (myLaneObjects.polys.size() > 0) {
610 return myLaneObjects.polys.front();
620 if (mySwapLane2edge) {
621 if (myEdgeObjects.TAZs.size() > 0) {
622 return myEdgeObjects.TAZs.front();
627 if (myLaneObjects.TAZs.size() > 0) {
628 return myLaneObjects.TAZs.front();
638 if (mySwapLane2edge) {
639 if (myEdgeObjects.edgeDatas.size() > 0) {
640 return myEdgeObjects.edgeDatas.front();
645 if (myLaneObjects.edgeDatas.size() > 0) {
646 return myLaneObjects.edgeDatas.front();
656 if (mySwapLane2edge) {
657 if (myEdgeObjects.edgeRelDatas.size() > 0) {
658 return myEdgeObjects.edgeRelDatas.front();
663 if (myLaneObjects.edgeRelDatas.size() > 0) {
664 return myLaneObjects.edgeRelDatas.front();
671const std::vector<GUIGlObject*>&
673 if (mySwapLane2edge) {
674 return myEdgeObjects.GUIGlObjects;
676 return myLaneObjects.GUIGlObjects;
681const std::vector<GNEAttributeCarrier*>&
683 if (mySwapLane2edge) {
684 return myEdgeObjects.attributeCarriers;
686 return myLaneObjects.attributeCarriers;
691const std::vector<GNEJunction*>&
693 if (mySwapLane2edge) {
694 return myEdgeObjects.junctions;
696 return myLaneObjects.junctions;
701const std::vector<GNEDemandElement*>&
703 if (mySwapLane2edge) {
704 return myEdgeObjects.demandElements;
706 return myLaneObjects.demandElements;
717 GUIGlObjects.clear();
718 attributeCarriers.clear();
719 networkElements.clear();
721 demandElements.clear();
726 walkingAreas.clear();
728 internalLanes.clear();
732 genericDatas.clear();
734 edgeRelDatas.clear();
738std::vector<GUIGlObject*>
741 std::vector<GUIGlObject*> filteredGUIGlObjects;
743 for (
const auto& GLObject : GUIGlObjects) {
745 const auto it = std::find(filteredGUIGlObjects.begin(), filteredGUIGlObjects.end(), GLObject);
746 if (it == filteredGUIGlObjects.end()) {
747 filteredGUIGlObjects.push_back(GLObject);
750 return filteredGUIGlObjects;
757 std::map<double, std::vector<GUIGlObject*> > mySortedGUIGlObjects;
759 for (
const auto& GLObject : GUIGlObjects) {
761 const Shape* shape =
dynamic_cast<Shape*
>(GLObject);
763 mySortedGUIGlObjects[shape->
getShapeLayer()].push_back(GLObject);
765 mySortedGUIGlObjects[GLObject->getType()].push_back(GLObject);
769 for (std::map<
double, std::vector<GUIGlObject*> >::reverse_iterator i = mySortedGUIGlObjects.rbegin(); i != mySortedGUIGlObjects.rend(); i++) {
770 for (
const auto& GlObject : i->second) {
774 if (GlObject->getType() ==
GLO_LANE) {
775 myLaneObjects.GUIGlObjects.push_back(GlObject);
777 myEdgeObjects.GUIGlObjects.push_back(GlObject);
778 myLaneObjects.GUIGlObjects.push_back(GlObject);
915 if (additionalElement == myViewNet->getFrontAttributeCarrier()) {
920 container.
additionals.push_back(additionalElement);
933 if (AC == myViewNet->getFrontAttributeCarrier()) {
935 container.
POIs.insert(container.
POIs.begin(),
POI);
946 if (AC == myViewNet->getFrontAttributeCarrier()) {
948 container.
polys.insert(container.
polys.begin(), poly);
951 container.
polys.push_back(poly);
966 if (AC == myViewNet->getFrontAttributeCarrier()) {
968 container.
TAZs.insert(container.
TAZs.begin(),
TAZ);
983 if (demandElement == myViewNet->getFrontAttributeCarrier()) {
1009 if (AC == frontAC) {
1019 if (AC == frontAC) {
1042 container.
GUIGlObjects.push_back(attributeCarrrier->getGUIGlObject());
1050 for (
const auto& glObject : myEdgeObjects.GUIGlObjects) {
1056 updateAttributeCarriers(myEdgeObjects, AC);
1060 updateNetworkElements(myEdgeObjects, AC);
1063 updateAdditionalElements(myEdgeObjects, AC);
1067 updateShapeElements(myEdgeObjects, AC);
1071 updateTAZElements(myEdgeObjects, AC);
1075 updateDemandElements(myEdgeObjects, AC);
1078 updateGenericDataElements(myEdgeObjects, AC);
1083 updateGUIGlObjects(myEdgeObjects);
1085 for (
const auto& glObject : myLaneObjects.GUIGlObjects) {
1091 updateAttributeCarriers(myLaneObjects, AC);
1095 updateNetworkElements(myLaneObjects, AC);
1098 updateAdditionalElements(myLaneObjects, AC);
1102 updateShapeElements(myLaneObjects, AC);
1106 updateTAZElements(myLaneObjects, AC);
1110 updateDemandElements(myLaneObjects, AC);
1113 updateGenericDataElements(myLaneObjects, AC);
1118 updateGUIGlObjects(myLaneObjects);
1124 mySwapLane2edge(false) {
1132 myEventInfo(nullptr) {
1138 myEventInfo = (FXEvent*) eventData;
1145 return (myEventInfo->state & SHIFTMASK) != 0;
1155 return (myEventInfo->state & CONTROLMASK) != 0;
1165 return (myEventInfo->state & ALTMASK) != 0;
1175 return (myEventInfo->state & LEFTBUTTONMASK) != 0;
1185 return (myEventInfo->state & RIGHTBUTTONMASK) != 0;
1196 myViewNet(viewNet) {
1203 myRelativeClickedPosition = myViewNet->getPositionInformation();
1205 const GNENetworkElement* editedElement = myViewNet->myEditNetworkElementShapes.getEditedNetworkElement();
1207 if (myViewNet->myObjectsUnderCursor.getJunctionFront() && (myViewNet->myObjectsUnderCursor.getJunctionFront() == editedElement)) {
1209 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getJunctionFront()->getMoveOperation();
1211 if (moveOperation) {
1212 myMoveOperations.push_back(moveOperation);
1217 }
else if (myViewNet->myObjectsUnderCursor.getLaneFront() && (myViewNet->myObjectsUnderCursor.getLaneFront() == editedElement)) {
1219 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getLaneFront()->getMoveOperation();
1221 if (moveOperation) {
1222 myMoveOperations.push_back(moveOperation);
1227 }
else if (myViewNet->myObjectsUnderCursor.getCrossingFront() && (myViewNet->myObjectsUnderCursor.getCrossingFront() == editedElement)) {
1229 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getCrossingFront()->getMoveOperation();
1231 if (moveOperation) {
1232 myMoveOperations.push_back(moveOperation);
1237 }
else if (myViewNet->myObjectsUnderCursor.getConnectionFront() && (myViewNet->myObjectsUnderCursor.getConnectionFront() == editedElement)) {
1239 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getConnectionFront()->getMoveOperation();
1241 if (moveOperation) {
1242 myMoveOperations.push_back(moveOperation);
1247 }
else if (myViewNet->myObjectsUnderCursor.getWalkingAreaFront() && (myViewNet->myObjectsUnderCursor.getWalkingAreaFront() == editedElement)) {
1249 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getWalkingAreaFront()->getMoveOperation();
1251 if (moveOperation) {
1252 myMoveOperations.push_back(moveOperation);
1267 myRelativeClickedPosition = myViewNet->getPositionInformation();
1269 const GNEAttributeCarrier* frontAC = myViewNet->myObjectsUnderCursor.getAttributeCarrierFront();
1271 if (myViewNet->myObjectsUnderCursor.getPolyFront() && (frontAC == myViewNet->myObjectsUnderCursor.getPolyFront())) {
1273 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getPolyFront()->getMoveOperation();
1275 if (moveOperation) {
1276 myMoveOperations.push_back(moveOperation);
1281 }
else if (myViewNet->myObjectsUnderCursor.getPOIFront() && (frontAC == myViewNet->myObjectsUnderCursor.getPOIFront())) {
1283 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getPOIFront()->getMoveOperation();
1285 if (moveOperation) {
1286 myMoveOperations.push_back(moveOperation);
1291 }
else if (myViewNet->myObjectsUnderCursor.getAdditionalFront() && (frontAC == myViewNet->myObjectsUnderCursor.getAdditionalFront())) {
1293 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getAdditionalFront()->getMoveOperation();
1295 if (moveOperation) {
1296 myMoveOperations.push_back(moveOperation);
1301 }
else if (myViewNet->myObjectsUnderCursor.getJunctionFront() && (frontAC == myViewNet->myObjectsUnderCursor.getJunctionFront())) {
1303 if (myViewNet->myObjectsUnderCursor.getEdgeFront() && (myViewNet->myObjectsUnderCursor.getEdgeFront()->clickedOverGeometryPoint(myRelativeClickedPosition))) {
1305 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getEdgeFront()->getMoveOperation();
1307 if (moveOperation) {
1308 myMoveOperations.push_back(moveOperation);
1315 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getJunctionFront()->getMoveOperation();
1317 if (moveOperation) {
1318 myMoveOperations.push_back(moveOperation);
1324 }
else if ((myViewNet->myObjectsUnderCursor.getEdgeFront() && (frontAC == myViewNet->myObjectsUnderCursor.getEdgeFront())) ||
1325 (myViewNet->myObjectsUnderCursor.getLaneFront() && (frontAC == myViewNet->myObjectsUnderCursor.getLaneFront()))) {
1327 if (myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1329 myViewNet->myObjectsUnderCursor.getEdgeFront()->editEndpoint(myViewNet->getPositionInformation(), myViewNet->myUndoList);
1334 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getEdgeFront()->getMoveOperation();
1336 if (moveOperation) {
1337 myMoveOperations.push_back(moveOperation);
1353 myRelativeClickedPosition = myViewNet->getPositionInformation();
1355 const GNEAttributeCarrier* frontAC = myViewNet->myObjectsUnderCursor.getAttributeCarrierFront();
1357 if (myViewNet->myObjectsUnderCursor.getDemandElementFront() && (frontAC == myViewNet->myObjectsUnderCursor.getDemandElementFront())) {
1359 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getDemandElementFront()->getMoveOperation();
1361 if (moveOperation) {
1362 myMoveOperations.push_back(moveOperation);
1380 if (mouseLeftButtonPressed) {
1382 for (
const auto& moveOperation : myMoveOperations) {
1388 for (
const auto& moveOperation : myMoveOperations) {
1392 delete moveOperation;
1395 myMoveOperations.clear();
1405 for (
const auto& moveOperation : myMoveOperations) {
1408 delete moveOperation;
1411 myMoveOperations.clear();
1419 Position moveOffset = (myViewNet->getPositionInformation() - myViewNet->myMoveSingleElementValues.myRelativeClickedPosition);
1421 if (myViewNet->myNetworkViewOptions.menuCheckMoveElevation->shown() && myViewNet->myNetworkViewOptions.menuCheckMoveElevation->amChecked() == TRUE) {
1436 myMovingSelectedEdge(false),
1444 myClickedPosition = myViewNet->getPositionInformation();
1446 if (myViewNet->myObjectsUnderCursor.getJunctionFront()) {
1447 calculateJunctionSelection();
1448 }
else if (myViewNet->myObjectsUnderCursor.getEdgeFront()) {
1449 calculateEdgeSelection(myViewNet->myObjectsUnderCursor.getEdgeFront());
1459 if (mouseLeftButtonPressed) {
1461 for (
const auto& moveOperation : myMoveOperations) {
1465 }
else if (myMoveOperations.size() > 0) {
1469 for (
const auto& moveOperation : myMoveOperations) {
1473 delete moveOperation;
1476 myViewNet->getUndoList()->end();
1478 myMoveOperations.clear();
1490 for (
const auto& moveOperation : myMoveOperations) {
1493 delete moveOperation;
1496 myViewNet->getUndoList()->end();
1498 myMoveOperations.clear();
1504 return (myMoveOperations.size() > 0);
1510 return myMovingSelectedEdge;
1516 myMovingSelectedEdge =
false;
1522 return myEdgeOffset;
1530 Position moveOffset = (myViewNet->getPositionInformation() - myClickedPosition);
1532 if (myViewNet->myNetworkViewOptions.menuCheckMoveElevation->shown() && myViewNet->myNetworkViewOptions.menuCheckMoveElevation->amChecked() == TRUE) {
1547 const auto selectedJunctions = myViewNet->getNet()->getAttributeCarriers()->getSelectedJunctions();
1549 for (
const auto& junction : selectedJunctions) {
1550 moveOperation = junction->getMoveOperation();
1551 if (moveOperation) {
1552 myMoveOperations.push_back(moveOperation);
1556 const auto selectedEdges = myViewNet->getNet()->getAttributeCarriers()->getSelectedEdges();
1558 for (
const auto& edge : selectedEdges) {
1559 moveOperation = edge->getMoveOperation();
1560 if (moveOperation) {
1561 myMoveOperations.push_back(moveOperation);
1570 const auto selectedJunctions = myViewNet->getNet()->getAttributeCarriers()->getSelectedJunctions();
1572 for (
const auto& junction : selectedJunctions) {
1574 if (moveOperation) {
1575 myMoveOperations.push_back(moveOperation);
1579 myMovingSelectedEdge =
true;
1586 myEdgeOffset = shape.length2D() - shape.nearest_offset_to_point2D(myViewNet->getPositionInformation());
1589 const auto selectedEdges = myViewNet->getNet()->getAttributeCarriers()->getSelectedEdges();
1591 for (
const auto& edge : selectedEdges) {
1594 if (moveOperation) {
1595 myMoveOperations.push_back(moveOperation);
1605 myViewNet(viewNet) {
1626 myViewNet(viewNet) {
1647 selectingUsingRectangle(false),
1648 startDrawing(false),
1649 myViewNet(viewNet) {
1655 selectingUsingRectangle =
true;
1656 selectionCorner1 = myViewNet->getPositionInformation();
1657 selectionCorner2 = selectionCorner1;
1664 startDrawing =
true;
1666 selectionCorner2 = myViewNet->getPositionInformation();
1668 myViewNet->setStatusBarText(
TL(
"Selection width:") +
toString(fabs(selectionCorner1.x() - selectionCorner2.x()))
1669 +
TL(
" height:") +
toString(fabs(selectionCorner1.y() - selectionCorner2.y()))
1670 +
TL(
" diagonal:") +
toString(selectionCorner1.distanceTo2D(selectionCorner2)));
1677 selectingUsingRectangle =
false;
1678 startDrawing =
false;
1680 myViewNet->setStatusBarText(
"");
1687 if ((abs(selectionCorner1.x() - selectionCorner2.x()) > 0.01) &&
1688 (abs(selectionCorner1.y() - selectionCorner2.y()) > 0.01) &&
1689 myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1692 rectangleBoundary.
add(selectionCorner1);
1693 rectangleBoundary.
add(selectionCorner2);
1695 processBoundarySelection(rectangleBoundary);
1700std::vector<GNEEdge*>
1703 std::vector<GNEEdge*> result;
1705 if ((abs(selectionCorner1.x() - selectionCorner2.x()) > 0.01) &&
1706 (abs(selectionCorner1.y() - selectionCorner2.y()) > 0.01) &&
1707 myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1710 rectangleBoundary.
add(selectionCorner1);
1711 rectangleBoundary.
add(selectionCorner2);
1712 if (myViewNet->makeCurrent()) {
1714 std::set<std::pair<std::string, GNEAttributeCarrier*> > ACsInBoundary = myViewNet->getAttributeCarriersInBoundary(rectangleBoundary);
1716 for (
const auto& AC : ACsInBoundary) {
1717 if (AC.second->getTagProperty().getTag() ==
SUMO_TAG_EDGE) {
1718 result.push_back(
dynamic_cast<GNEEdge*
>(AC.second));
1721 myViewNet->makeNonCurrent();
1736 if (selectingUsingRectangle) {
1741 glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
1743 glVertex2d(selectionCorner1.x(), selectionCorner1.y());
1744 glVertex2d(selectionCorner1.x(), selectionCorner2.y());
1745 glVertex2d(selectionCorner2.x(), selectionCorner2.y());
1746 glVertex2d(selectionCorner2.x(), selectionCorner1.y());
1755 if (myViewNet->makeCurrent()) {
1756 std::set<std::pair<std::string, GNEAttributeCarrier*> > ACsInBoundary = myViewNet->getAttributeCarriersInBoundary(boundary);
1758 std::set<std::pair<std::string, GNEAttributeCarrier*> > ACsInBoundaryFiltered;
1759 for (
const auto& AC : ACsInBoundary) {
1760 if (myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
1761 if (AC.second->getTagProperty().isNetworkElement() || AC.second->getTagProperty().isAdditionalElement()) {
1762 ACsInBoundaryFiltered.insert(AC);
1764 }
else if (myViewNet->myEditModes.isCurrentSupermodeDemand() && AC.second->getTagProperty().isDemandElement()) {
1765 ACsInBoundaryFiltered.insert(AC);
1766 }
else if (myViewNet->myEditModes.isCurrentSupermodeData() && AC.second->getTagProperty().isGenericData()) {
1767 ACsInBoundaryFiltered.insert(AC);
1771 std::vector<GNEAttributeCarrier*> ACToSelect;
1772 std::vector<GNEAttributeCarrier*> ACToUnselect;
1774 ACToSelect.reserve(ACsInBoundaryFiltered.size());
1775 ACToUnselect.reserve(ACsInBoundaryFiltered.size());
1780 const auto selectedAC = myViewNet->getNet()->getAttributeCarriers()->getSelectedAttributeCarriers(
false);
1782 for (
const auto& AC : selectedAC) {
1783 ACToUnselect.push_back(AC);
1787 for (
const auto& AC : ACsInBoundaryFiltered) {
1788 switch (myViewNet->myViewParent->getSelectorFrame()->getModificationModeModul()->getModificationMode()) {
1790 ACToUnselect.push_back(AC.second);
1793 if (std::find(ACToUnselect.begin(), ACToUnselect.end(), AC.second) != ACToUnselect.end()) {
1794 ACToSelect.push_back(AC.second);
1798 ACToSelect.push_back(AC.second);
1804 std::vector<GNEEdge*> edgesToSelect;
1806 for (
const auto& AC : ACToSelect) {
1808 edgesToSelect.push_back(
dynamic_cast<GNEEdge*
>(AC));
1812 for (
const auto& edge : edgesToSelect) {
1814 ACToSelect.push_back(edge->getFromJunction());
1815 for (
const auto& connection : edge->getFromJunction()->getGNEConnections()) {
1816 ACToSelect.push_back(connection);
1818 for (
const auto& crossing : edge->getFromJunction()->getGNECrossings()) {
1819 ACToSelect.push_back(crossing);
1822 ACToSelect.push_back(edge->getToJunction());
1823 for (
const auto& connection : edge->getToJunction()->getGNEConnections()) {
1824 ACToSelect.push_back(connection);
1826 for (
const auto& crossing : edge->getToJunction()->getGNECrossings()) {
1827 ACToSelect.push_back(crossing);
1832 if ((ACToSelect.size() + ACToUnselect.size()) > 0) {
1835 for (
const auto& AC : ACToUnselect) {
1838 for (
const auto& AC : ACToSelect) {
1839 if (AC->getTagProperty().isSelectable()) {
1843 myViewNet->myUndoList->end();
1845 myViewNet->makeNonCurrent();
1854 myViewNet(viewNet) {
1864 if ((windowSize.size() == 2) && GNEAttributeCarrier::canParse<int>(windowSize[0]) && GNEAttributeCarrier::canParse<int>(windowSize[1])) {
1865 myTestingWidth = GNEAttributeCarrier::parse<int>(windowSize[0]);
1866 myTestingHeight = GNEAttributeCarrier::parse<int>(windowSize[1]);
1879 if (myTestingWidth > 0) {
1880 mainWindow->resize(myTestingWidth, myTestingHeight);
1884 const double size = myViewNet->p2m(32);
1885 Position center = myViewNet->screenPos2NetPos(8, 8);
1890 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
1893 glVertex2d(0, -size);
1894 glVertex2d(size, -size);
1895 glVertex2d(size, 0);
1902 glScaled(0.7, 0.7, 0);
1903 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
1906 glVertex2d(0, -size);
1907 glVertex2d(size, -size);
1908 glVertex2d(size, 0);
1915 glScaled(0.4, 0.4, 0);
1916 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
1919 glVertex2d(0, -size);
1920 glVertex2d(size, -size);
1921 glVertex2d(size, 0);
1932 myViewNet(viewNet) {
1937 delete mySaveIndividualFilesPopup;
1944 mySaveNeteditConfig =
new MFXButtonTooltip(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements,
1945 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
1948 mySaveNeteditConfig->create();
1950 mySaveSumoConfig =
new MFXButtonTooltip(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements,
1951 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
1954 mySaveSumoConfig->create();
1956 mySaveNetwork =
new MFXButtonTooltip(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements,
1957 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
1960 mySaveNetwork->create();
1962 mySaveIndividualFilesPopup =
new FXPopup(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements, POPUP_VERTICAL);
1963 mySaveIndividualFilesPopup->create();
1965 mySaveIndividualFiles =
new MFXMenuButtonTooltip(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements,
1966 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(), std::string(
"\t") +
TL(
"Save individual files") + std::string(
"\t") +
TL(
"Save individual files."),
1968 mySaveIndividualFiles->create();
1970 mySaveAdditionalElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup,
1971 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
1974 mySaveAdditionalElements->create();
1977 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
1980 mySaveDemandElements->create();
1983 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
1986 mySaveDataElements->create();
1989 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
1992 mySaveMeanDataElements->create();
1994 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements->recalc();
1996 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements->show();
2003 mySaveIndividualFiles->enable();
2005 mySaveIndividualFiles->disable();
2018 networkButton(nullptr),
2019 demandButton(nullptr),
2020 dataButton(nullptr),
2021 myViewNet(viewNet) {
2024 if (neteditOptions.getBool(
"new")) {
2026 neteditOptions.resetWritable();
2027 neteditOptions.set(
"new",
"false");
2036 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes,
2037 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2038 TL(
"Network") + std::string(
"\t") +
TL(
"Edit network elements") + std::string(
"\t") +
TL(
"Set mode for edit network elements. (F2)"),
2040 networkButton->create();
2043 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes,
2044 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2045 TL(
"Demand") + std::string(
"\t") +
TL(
"Edit traffic demand elements") + std::string(
"\t") +
TL(
"Set mode for edit traffic demand. (F3)"),
2047 demandButton->create();
2050 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes,
2051 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2052 TL(
"Data") + std::string(
"\t") +
TL(
"Edit data elements") + std::string(
"\t") +
TL(
"Set mode for edit data demand. (F4)"),
2054 dataButton->create();
2056 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
2058 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes->show();
2064 if (!force && (supermode == currentSupermode)) {
2065 myViewNet->setStatusBarText(
TL(
"Mode already selected"));
2066 if (myViewNet->myCurrentFrame !=
nullptr) {
2067 myViewNet->myCurrentFrame->focusUpperElement();
2070 myViewNet->setStatusBarText(
"");
2072 myViewNet->abortOperation(
false);
2074 currentSupermode = supermode;
2078 networkButton->setChecked(
true);
2079 demandButton->setChecked(
false);
2080 dataButton->setChecked(
false);
2082 myViewNet->myNetworkCheckableButtons.showNetworkCheckableButtons();
2084 myViewNet->myDemandCheckableButtons.hideDemandCheckableButtons();
2086 myViewNet->myDataCheckableButtons.hideDataCheckableButtons();
2088 setNetworkEditMode(networkEditMode,
true);
2091 networkButton->setChecked(
false);
2092 demandButton->setChecked(
true);
2093 dataButton->setChecked(
false);
2095 myViewNet->myNetworkCheckableButtons.hideNetworkCheckableButtons();
2097 myViewNet->myDemandCheckableButtons.showDemandCheckableButtons();
2099 myViewNet->myDataCheckableButtons.hideDataCheckableButtons();
2101 setDemandEditMode(demandEditMode,
true);
2103 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2105 if (!myViewNet->myNet->getPathManager()->getPathCalculator()->isPathCalculatorUpdated()) {
2107 myViewNet->myNet->getPathManager()->getPathCalculator()->updatePathCalculator();
2109 myViewNet->myNet->computeDemandElements(myViewNet->myViewParent->getGNEAppWindows());
2113 networkButton->setChecked(
false);
2114 demandButton->setChecked(
false);
2115 dataButton->setChecked(
true);
2117 myViewNet->myNetworkCheckableButtons.hideNetworkCheckableButtons();
2119 myViewNet->myDemandCheckableButtons.hideDemandCheckableButtons();
2121 myViewNet->myDataCheckableButtons.showDataCheckableButtons();
2123 setDataEditMode(dataEditMode,
true);
2125 if (myViewNet->getViewParent()->getGNEAppWindows()->getProcessingMenuCommands().menuCheckRecomputeDataMode->getCheck() == TRUE) {
2127 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2130 if (!myViewNet->myNet->getPathManager()->getPathCalculator()->isPathCalculatorUpdated()) {
2132 myViewNet->myNet->getPathManager()->getPathCalculator()->updatePathCalculator();
2134 myViewNet->myNet->computeDemandElements(myViewNet->myViewParent->getGNEAppWindows());
2138 networkButton->update();
2139 demandButton->update();
2140 dataButton->update();
2142 myViewNet->myViewParent->getGNEAppWindows()->updateSuperModeMenuCommands(currentSupermode);
2149 if ((mode == networkEditMode) && !force) {
2150 myViewNet->setStatusBarText(
TL(
"Network mode already selected"));
2151 if (myViewNet->myCurrentFrame !=
nullptr) {
2152 myViewNet->myCurrentFrame->focusUpperElement();
2155 myViewNet->setStatusBarText(
TL(
"Save modifications in TLS before change mode"));
2156 myViewNet->myCurrentFrame->focusUpperElement();
2158 myViewNet->setStatusBarText(
"");
2159 myViewNet->abortOperation(
false);
2161 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2163 networkEditMode = mode;
2184 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2190 myViewNet->updateCursor();
2192 myViewNet->updateNetworkModeSpecificControls();
2199 if ((mode == demandEditMode) && !force) {
2200 myViewNet->setStatusBarText(
TL(
"Demand mode already selected"));
2201 if (myViewNet->myCurrentFrame !=
nullptr) {
2202 myViewNet->myCurrentFrame->focusUpperElement();
2205 myViewNet->setStatusBarText(
"");
2206 myViewNet->abortOperation(
false);
2208 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2210 demandEditMode = mode;
2225 myViewNet->updateCursor();
2227 myViewNet->updateDemandModeSpecificControls();
2234 if ((mode == dataEditMode) && !force) {
2235 myViewNet->setStatusBarText(
TL(
"Data mode already selected"));
2236 if (myViewNet->myCurrentFrame !=
nullptr) {
2237 myViewNet->myCurrentFrame->focusUpperElement();
2240 myViewNet->setStatusBarText(
"");
2241 myViewNet->abortOperation(
false);
2243 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2245 dataEditMode = mode;
2258 for (
const auto& dataSet : myViewNet->getNet()->getAttributeCarriers()->getDataSets()) {
2259 dataSet->updateAttributeColors();
2262 myViewNet->updateCursor();
2264 myViewNet->updateDataModeSpecificControls();
2291 menuCheckToggleGrid(nullptr),
2292 menuCheckToggleDrawJunctionShape(nullptr),
2293 menuCheckDrawSpreadVehicles(nullptr),
2294 menuCheckShowDemandElements(nullptr),
2295 menuCheckSelectEdges(nullptr),
2296 menuCheckShowConnections(nullptr),
2297 menuCheckHideConnections(nullptr),
2298 menuCheckShowAdditionalSubElements(nullptr),
2299 menuCheckShowTAZElements(nullptr),
2300 menuCheckExtendSelection(nullptr),
2301 menuCheckChangeAllPhases(nullptr),
2302 menuCheckWarnAboutMerge(nullptr),
2303 menuCheckShowJunctionBubble(nullptr),
2304 menuCheckMoveElevation(nullptr),
2305 menuCheckChainEdges(nullptr),
2306 menuCheckAutoOppositeEdge(nullptr),
2307 myViewNet(viewNet) {
2314 menuCheckToggleGrid =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2315 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2316 (std::string(
"\t") +
TL(
"Show grid") + std::string(
"\t") +
TL(
"Show grid and restrict movement to the grid - define grid size in visualization options. (Ctrl+G)")),
2319 menuCheckToggleGrid->setChecked(
false);
2320 menuCheckToggleGrid->create();
2322 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2323 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2324 (std::string(
"\t") +
TL(
"Hide junction shape") + std::string(
"\t") +
TL(
"Toggle hiding junction shape. (Ctrl+J)")),
2327 menuCheckToggleDrawJunctionShape->setChecked(
false);
2328 menuCheckToggleDrawJunctionShape->create();
2330 menuCheckDrawSpreadVehicles =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2331 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2332 (std::string(
"\t") +
TL(
"Draw vehicles spread in lane or depart position") + std::string(
"\t") +
TL(
"Draw vehicles spread in lane or in depart position.")),
2335 menuCheckDrawSpreadVehicles->setChecked(
false);
2336 menuCheckDrawSpreadVehicles->create();
2338 menuCheckShowDemandElements =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2339 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2340 (std::string(
"\t") +
TL(
"Show demand elements") + std::string(
"\t") +
TL(
"Toggle show demand elements.")),
2343 menuCheckShowDemandElements->setChecked(
false);
2344 menuCheckShowDemandElements->create();
2346 menuCheckSelectEdges =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2347 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2348 (std::string(
"\t") +
TL(
"Clicks target lanes") + std::string(
"\t") +
TL(
"Toggle whether clicking should inspect/select/delete lanes instead of edges.")),
2351 menuCheckSelectEdges->create();
2353 menuCheckShowConnections =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2354 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2355 (std::string(
"\t") +
TL(
"Show connections over junctions") + std::string(
"\t") +
TL(
"Toggle show connections over junctions.")),
2358 menuCheckShowConnections->setChecked(myViewNet->getVisualisationSettings().showLane2Lane);
2359 menuCheckShowConnections->create();
2361 menuCheckHideConnections =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2362 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2363 (std::string(
"\t") +
TL(
"Hide connections") + std::string(
"\t") +
TL(
"Toggle hide connections.")),
2366 menuCheckHideConnections->setChecked(
false);
2367 menuCheckHideConnections->create();
2369 menuCheckShowAdditionalSubElements =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2370 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2371 (std::string(
"\t") +
TL(
"Show additional sub-elements") + std::string(
"\t") +
TL(
"Toggle show additional sub-elements.")),
2374 menuCheckShowAdditionalSubElements->setChecked(
false);
2375 menuCheckShowAdditionalSubElements->create();
2377 menuCheckShowTAZElements =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2378 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2379 (std::string(
"\t") +
TL(
"Show TAZ elements") + std::string(
"\t") +
TL(
"Toggle show TAZ elements.")),
2382 menuCheckShowTAZElements->setChecked(
false);
2383 menuCheckShowTAZElements->create();
2385 menuCheckExtendSelection =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2386 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2387 (std::string(
"\t") +
TL(
"Automatic select junctions") + std::string(
"\t") +
TL(
"Toggle whether selecting multiple edges should automatically select their junctions.")),
2390 menuCheckExtendSelection->setChecked(
true);
2391 menuCheckExtendSelection->create();
2393 menuCheckChangeAllPhases =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2394 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2395 (std::string(
"\t") +
TL(
"Apply state to all phases") + std::string(
"\t") +
TL(
"Toggle whether clicking should apply state changes to all phases of the current TLS plan.")),
2398 menuCheckChangeAllPhases->setChecked(
false);
2399 menuCheckChangeAllPhases->create();
2401 menuCheckWarnAboutMerge =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2402 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2403 (std::string(
"\t") +
TL(
"Automatic merging junction") + std::string(
"\t") +
TL(
"Toggle ask for confirmation before merging junction.")),
2406 menuCheckWarnAboutMerge->create();
2408 menuCheckShowJunctionBubble =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2409 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2410 (std::string(
"\t") +
TL(
"Show bubbles") + std::string(
"\t") +
TL(
"Toggle show bubbles over junctions shapes.")),
2413 menuCheckShowJunctionBubble->setChecked(
false);
2414 menuCheckShowJunctionBubble->create();
2416 menuCheckMoveElevation =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2417 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2418 (std::string(
"\t") +
TL(
"Move elevation") + std::string(
"\t") +
TL(
"Apply mouse movement to elevation instead of x,y position.")),
2421 menuCheckMoveElevation->setChecked(
false);
2422 menuCheckMoveElevation->create();
2424 menuCheckChainEdges =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2425 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2426 (std::string(
"\t") +
TL(
"Edge chain mode") + std::string(
"\t") +
TL(
"Create consecutive edges with a single click (hit ESC to cancel chain).")),
2429 menuCheckChainEdges->setChecked(
false);
2430 menuCheckChainEdges->create();
2432 menuCheckAutoOppositeEdge =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2433 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2434 (std::string(
"\t") +
TL(
"Edge opposite direction") + std::string(
"\t") +
TL(
"Automatically create an edge in the opposite direction.")),
2437 menuCheckAutoOppositeEdge->setChecked(
false);
2438 menuCheckAutoOppositeEdge->create();
2441 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
2447 menuCheckToggleGrid->hide();
2448 menuCheckToggleDrawJunctionShape->hide();
2449 menuCheckDrawSpreadVehicles->hide();
2450 menuCheckShowDemandElements->hide();
2451 menuCheckSelectEdges->hide();
2452 menuCheckShowConnections->hide();
2453 menuCheckHideConnections->hide();
2454 menuCheckShowAdditionalSubElements->hide();
2455 menuCheckShowTAZElements->hide();
2456 menuCheckExtendSelection->hide();
2457 menuCheckChangeAllPhases->hide();
2458 menuCheckWarnAboutMerge->hide();
2459 menuCheckShowJunctionBubble->hide();
2460 menuCheckMoveElevation->hide();
2461 menuCheckChainEdges->hide();
2462 menuCheckAutoOppositeEdge->hide();
2464 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->show();
2471 if (menuCheckToggleGrid->shown()) {
2472 commands.push_back(menuCheckToggleGrid);
2474 if (menuCheckToggleDrawJunctionShape->shown()) {
2475 commands.push_back(menuCheckToggleDrawJunctionShape);
2477 if (menuCheckDrawSpreadVehicles->shown()) {
2478 commands.push_back(menuCheckDrawSpreadVehicles);
2480 if (menuCheckShowDemandElements->shown()) {
2481 commands.push_back(menuCheckShowDemandElements);
2483 if (menuCheckSelectEdges->shown()) {
2484 commands.push_back(menuCheckSelectEdges);
2486 if (menuCheckShowConnections->shown()) {
2487 commands.push_back(menuCheckShowConnections);
2489 if (menuCheckHideConnections->shown()) {
2490 commands.push_back(menuCheckHideConnections);
2492 if (menuCheckShowAdditionalSubElements->shown()) {
2493 commands.push_back(menuCheckShowAdditionalSubElements);
2495 if (menuCheckShowTAZElements->shown()) {
2496 commands.push_back(menuCheckShowTAZElements);
2498 if (menuCheckExtendSelection->shown()) {
2499 commands.push_back(menuCheckExtendSelection);
2501 if (menuCheckChangeAllPhases->shown()) {
2502 commands.push_back(menuCheckChangeAllPhases);
2504 if (menuCheckWarnAboutMerge->shown()) {
2505 commands.push_back(menuCheckWarnAboutMerge);
2507 if (menuCheckShowJunctionBubble->shown()) {
2508 commands.push_back(menuCheckShowJunctionBubble);
2510 if (menuCheckMoveElevation->shown()) {
2511 commands.push_back(menuCheckMoveElevation);
2513 if (menuCheckChainEdges->shown()) {
2514 commands.push_back(menuCheckChainEdges);
2516 if (menuCheckAutoOppositeEdge->shown()) {
2517 commands.push_back(menuCheckAutoOppositeEdge);
2524 return (menuCheckDrawSpreadVehicles->amChecked() == TRUE);
2530 if (menuCheckShowDemandElements->shown()) {
2531 return (menuCheckShowDemandElements->amChecked() == TRUE);
2541 if (menuCheckSelectEdges->shown()) {
2542 return (menuCheckSelectEdges->amChecked() != TRUE);
2552 if (myViewNet->myEditModes.isCurrentSupermodeData()) {
2556 return (menuCheckHideConnections->amChecked() == FALSE);
2559 }
else if (myViewNet->myEditModes.isCurrentSupermodeNetwork() && menuCheckShowConnections->shown() ==
false) {
2562 return (myViewNet->getVisualisationSettings().showLane2Lane);
2569 if (!myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
2571 }
else if (menuCheckShowAdditionalSubElements->shown() ==
false) {
2574 return menuCheckShowAdditionalSubElements->amChecked();
2581 if (!myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
2583 }
else if (menuCheckShowTAZElements->shown() ==
false) {
2586 return menuCheckShowTAZElements->amChecked();
2593 if (menuCheckMoveElevation->shown()) {
2594 return (menuCheckMoveElevation->amChecked() == TRUE);
2605 menuCheckToggleGrid(nullptr),
2606 menuCheckToggleDrawJunctionShape(nullptr),
2607 menuCheckDrawSpreadVehicles(nullptr),
2608 menuCheckHideShapes(nullptr),
2609 menuCheckShowAllTrips(nullptr),
2610 menuCheckShowAllPersonPlans(nullptr),
2611 menuCheckLockPerson(nullptr),
2612 menuCheckShowAllContainerPlans(nullptr),
2613 menuCheckLockContainer(nullptr),
2614 menuCheckHideNonInspectedDemandElements(nullptr),
2615 menuCheckShowOverlappedRoutes(nullptr),
2617 myLockedPerson(nullptr),
2618 myLockedContainer(nullptr) {
2625 menuCheckToggleGrid =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2626 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2627 (std::string(
"\t") +
TL(
"Show grid") + std::string(
"\t") +
TL(
"Show grid and restrict movement to the grid - define grid size in visualization options. (Ctrl+G)")),
2630 menuCheckToggleGrid->setChecked(
false);
2631 menuCheckToggleGrid->create();
2633 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2634 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2635 (std::string(
"\t") +
TL(
"Hide junction shape") + std::string(
"\t") +
TL(
"Toggle hiding junction shape. (Ctrl+J)")),
2638 menuCheckToggleDrawJunctionShape->setChecked(
false);
2639 menuCheckToggleDrawJunctionShape->create();
2641 menuCheckDrawSpreadVehicles =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2642 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2643 (std::string(
"\t") +
TL(
"Draw vehicles spread/depart position") + std::string(
"\t") +
TL(
"Draw vehicles spread in lane or in depart position.")),
2646 menuCheckDrawSpreadVehicles->setChecked(
false);
2647 menuCheckDrawSpreadVehicles->create();
2649 menuCheckHideShapes =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2650 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2651 (std::string(
"\t") +
TL(
"Show shapes") + std::string(
"\t") +
TL(
"Toggle show shapes (Polygons and POIs).")),
2654 menuCheckHideShapes->setChecked(
false);
2655 menuCheckHideShapes->create();
2657 menuCheckShowAllTrips =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2658 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2659 (std::string(
"\t") +
TL(
"Show all trips") + std::string(
"\t") +
TL(
"Toggle show all trips (requires updated demand - F5).")),
2662 menuCheckShowAllTrips->setChecked(
false);
2663 menuCheckShowAllTrips->create();
2665 menuCheckShowAllPersonPlans =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2666 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2667 (std::string(
"\t") +
TL(
"Show all person plans") + std::string(
"\t") +
TL(
"Toggle show all person plans.")),
2670 menuCheckShowAllPersonPlans->setChecked(
false);
2671 menuCheckShowAllPersonPlans->create();
2673 menuCheckLockPerson =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2674 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2675 (std::string(
"\t") +
TL(
"Lock selected person") + std::string(
"\t") +
TL(
"Toggle lock selected person.")),
2678 menuCheckLockPerson->setChecked(
false);
2679 menuCheckLockPerson->create();
2681 menuCheckShowAllContainerPlans =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2682 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2683 (std::string(
"\t") +
TL(
"Show all containers plans") + std::string(
"\t") +
TL(
"Toggle show all container plans.")),
2686 menuCheckShowAllContainerPlans->setChecked(
false);
2687 menuCheckShowAllContainerPlans->create();
2689 menuCheckLockContainer =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2690 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2691 (std::string(
"\t") +
TL(
"Lock selected container") + std::string(
"\t") +
TL(
"Toggle lock selected container.")),
2694 menuCheckLockContainer->setChecked(
false);
2695 menuCheckLockContainer->create();
2697 menuCheckHideNonInspectedDemandElements =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2698 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2699 (std::string(
"\t") +
TL(
"Show non-inspected demand elements") + std::string(
"\t") +
TL(
"Toggle show non-inspected demand elements.")),
2702 menuCheckHideNonInspectedDemandElements->setChecked(
false);
2703 menuCheckHideNonInspectedDemandElements->create();
2705 menuCheckShowOverlappedRoutes =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2706 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2707 (std::string(
"\t") +
TL(
"Show number of overlapped routes") + std::string(
"\t") +
TL(
"Toggle show number of overlapped routes.")),
2710 menuCheckShowOverlappedRoutes->setChecked(
false);
2711 menuCheckShowOverlappedRoutes->create();
2714 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
2720 menuCheckToggleGrid->hide();
2721 menuCheckToggleDrawJunctionShape->hide();
2722 menuCheckDrawSpreadVehicles->hide();
2723 menuCheckHideShapes->hide();
2724 menuCheckShowAllTrips->hide();
2725 menuCheckShowAllPersonPlans->hide();
2726 menuCheckLockPerson->hide();
2727 menuCheckShowAllContainerPlans->hide();
2728 menuCheckLockContainer->hide();
2729 menuCheckHideNonInspectedDemandElements->hide();
2730 menuCheckShowOverlappedRoutes->hide();
2732 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->show();
2739 if (menuCheckToggleGrid->shown()) {
2740 commands.push_back(menuCheckToggleGrid);
2742 if (menuCheckToggleDrawJunctionShape->shown()) {
2743 commands.push_back(menuCheckToggleDrawJunctionShape);
2745 if (menuCheckDrawSpreadVehicles->shown()) {
2746 commands.push_back(menuCheckDrawSpreadVehicles);
2748 if (menuCheckHideShapes->shown()) {
2749 commands.push_back(menuCheckHideShapes);
2751 if (menuCheckShowAllTrips->shown()) {
2752 commands.push_back(menuCheckShowAllTrips);
2754 if (menuCheckShowAllPersonPlans->shown() && menuCheckShowAllPersonPlans->isEnabled()) {
2755 commands.push_back(menuCheckShowAllPersonPlans);
2757 if (menuCheckLockPerson->shown() && menuCheckLockPerson->isEnabled()) {
2758 commands.push_back(menuCheckLockPerson);
2760 if (menuCheckShowAllContainerPlans->shown() && menuCheckShowAllContainerPlans->isEnabled()) {
2761 commands.push_back(menuCheckShowAllContainerPlans);
2763 if (menuCheckLockContainer->shown() && menuCheckLockContainer->isEnabled()) {
2764 commands.push_back(menuCheckLockContainer);
2766 if (menuCheckHideNonInspectedDemandElements->shown()) {
2767 commands.push_back(menuCheckHideNonInspectedDemandElements);
2769 if (menuCheckShowOverlappedRoutes->shown()) {
2770 commands.push_back(menuCheckShowOverlappedRoutes);
2777 return (menuCheckDrawSpreadVehicles->amChecked() == TRUE);
2783 if (menuCheckHideNonInspectedDemandElements->shown()) {
2785 if ((menuCheckHideNonInspectedDemandElements->amChecked() == FALSE) || (myViewNet->getInspectedAttributeCarriers().empty())) {
2788 }
else if (myViewNet->getInspectedAttributeCarriers().front()->getTagProperty().isDemandElement()) {
2789 if (myViewNet->isAttributeCarrierInspected(demandElement)) {
2795 if (myViewNet->isAttributeCarrierInspected(i)) {
2801 if (myViewNet->isAttributeCarrierInspected(i)) {
2821 if (menuCheckHideShapes->shown()) {
2822 return (menuCheckHideShapes->amChecked() == FALSE);
2831 return (menuCheckShowAllTrips->amChecked() == TRUE);
2837 if (menuCheckShowAllPersonPlans->isEnabled()) {
2838 return (menuCheckShowAllPersonPlans->amChecked() == TRUE);
2847 myLockedPerson = person;
2853 myLockedPerson =
nullptr;
2859 return myLockedPerson;
2865 if (menuCheckShowAllContainerPlans->isEnabled()) {
2866 return (menuCheckShowAllContainerPlans->amChecked() == TRUE);
2875 myLockedContainer = container;
2881 myLockedContainer =
nullptr;
2887 if (menuCheckShowOverlappedRoutes->isEnabled()) {
2888 return (menuCheckShowOverlappedRoutes->amChecked() == TRUE);
2897 return myLockedContainer;
2905 menuCheckToggleDrawJunctionShape(nullptr),
2906 menuCheckShowAdditionals(nullptr),
2907 menuCheckShowShapes(nullptr),
2908 menuCheckShowDemandElements(nullptr),
2909 menuCheckToggleTAZRelDrawing(nullptr),
2910 menuCheckToggleTAZDrawFill(nullptr),
2911 menuCheckToggleTAZRelOnlyFrom(nullptr),
2912 menuCheckToggleTAZRelOnlyTo(nullptr),
2913 myViewNet(viewNet) {
2920 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2921 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2922 (std::string(
"\t") +
TL(
"Hide junction shape") + std::string(
"\t") +
TL(
"Toggle hiding junction shape. (Ctrl+J)")),
2925 menuCheckToggleDrawJunctionShape->setChecked(
false);
2926 menuCheckToggleDrawJunctionShape->create();
2928 menuCheckShowAdditionals =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2929 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2930 (std::string(
"\t") +
TL(
"Show additionals") + std::string(
"\t") +
TL(
"Toggle show additionals.")),
2933 menuCheckShowAdditionals->create();
2935 menuCheckShowShapes =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2936 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2937 (std::string(
"\t") +
TL(
"Show shapes") + std::string(
"\t") +
TL(
"Toggle show shapes (Polygons and POIs).")),
2940 menuCheckShowShapes->create();
2942 menuCheckShowDemandElements =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2943 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2944 (std::string(
"\t") +
TL(
"Show demand elements") + std::string(
"\t") +
TL(
"Toggle show demand elements.")),
2947 menuCheckShowDemandElements->create();
2949 menuCheckToggleTAZRelDrawing =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2950 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2951 (std::string(
"\t") +
TL(
"Draw TAZREL drawing mode") + std::string(
"\t") +
TL(
"Toggle draw TAZREL drawing mode.")),
2954 menuCheckToggleTAZRelDrawing->create();
2956 menuCheckToggleTAZDrawFill =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2957 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2958 (std::string(
"\t") +
TL(
"Toggle draw TAZ fill") + std::string(
"\t") +
TL(
"Toggle draw TAZ fill")),
2961 menuCheckToggleTAZDrawFill->create();
2963 menuCheckToggleTAZRelOnlyFrom =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2964 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2965 (std::string(
"\t") +
TL(
"Toggle draw TAZRel only from") + std::string(
"\t") +
TL(
"Toggle draw TAZRel only from")),
2968 menuCheckToggleTAZRelOnlyFrom->create();
2970 menuCheckToggleTAZRelOnlyTo =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2971 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2972 (std::string(
"\t") +
TL(
"Toggle draw TAZRel only to") + std::string(
"\t") +
TL(
"Toggle draw TAZRel only to")),
2975 menuCheckToggleTAZRelOnlyTo->create();
2978 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
2984 menuCheckToggleDrawJunctionShape->hide();
2985 menuCheckShowAdditionals->hide();
2986 menuCheckShowShapes->hide();
2987 menuCheckShowDemandElements->hide();
2988 menuCheckToggleTAZRelDrawing->hide();
2989 menuCheckToggleTAZDrawFill->hide();
2990 menuCheckToggleTAZRelOnlyFrom->hide();
2991 menuCheckToggleTAZRelOnlyTo->hide();
2993 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->show();
3000 if (menuCheckToggleDrawJunctionShape->shown()) {
3001 commands.push_back(menuCheckToggleDrawJunctionShape);
3003 if (menuCheckShowAdditionals->shown()) {
3004 commands.push_back(menuCheckShowAdditionals);
3006 if (menuCheckShowShapes->shown()) {
3007 commands.push_back(menuCheckShowShapes);
3009 if (menuCheckShowDemandElements->shown()) {
3010 commands.push_back(menuCheckShowDemandElements);
3012 if (menuCheckToggleTAZRelDrawing->shown()) {
3013 commands.push_back(menuCheckToggleTAZRelDrawing);
3015 if (menuCheckToggleTAZDrawFill->shown()) {
3016 commands.push_back(menuCheckToggleTAZDrawFill);
3018 if (menuCheckToggleTAZRelOnlyFrom->shown()) {
3019 commands.push_back(menuCheckToggleTAZRelOnlyFrom);
3021 if (menuCheckToggleTAZRelOnlyTo->shown()) {
3022 commands.push_back(menuCheckToggleTAZRelOnlyTo);
3029 if (menuCheckShowAdditionals->shown()) {
3030 return (menuCheckShowAdditionals->amChecked() == TRUE);
3039 if (menuCheckShowShapes->shown()) {
3040 return (menuCheckShowShapes->amChecked() == TRUE);
3049 if (menuCheckShowDemandElements->shown()) {
3050 return (menuCheckShowDemandElements->amChecked() == TRUE);
3059 return (menuCheckToggleTAZRelDrawing->amChecked() != TRUE);
3065 if (menuCheckToggleTAZDrawFill->shown()) {
3066 return (menuCheckToggleTAZDrawFill->amChecked() != TRUE);
3075 if (menuCheckToggleTAZRelOnlyFrom->shown()) {
3076 return (menuCheckToggleTAZRelOnlyFrom->amChecked() != TRUE);
3085 if (menuCheckToggleTAZRelOnlyTo->shown()) {
3086 return (menuCheckToggleTAZRelOnlyTo->amChecked() != TRUE);
3098 myUpdateInterval(true),
3099 myGenericDataTypesComboBox(nullptr),
3100 myDataSetsComboBox(nullptr),
3101 myIntervalCheckBox(nullptr),
3102 myBeginTextField(nullptr),
3103 myEndTextField(nullptr),
3104 myParametersComboBox(nullptr) {
3111 FXLabel* genericDataLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3113 genericDataLabel->create();
3115 myGenericDataTypesComboBox =
new FXComboBox(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3117 myGenericDataTypesComboBox->create();
3119 myGenericDataTypesComboBox->appendItem(
"<all>");
3123 myGenericDataTypesComboBox->setNumVisible(myGenericDataTypesComboBox->getNumItems());
3125 FXLabel* dataSetLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3127 dataSetLabel->create();
3129 myDataSetsComboBox =
new FXComboBox(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3131 myDataSetsComboBox->create();
3133 myIntervalCheckBox =
new FXCheckButton(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3135 myIntervalCheckBox->create();
3137 myBeginTextField =
new FXTextField(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3139 myBeginTextField->create();
3141 myEndTextField =
new FXTextField(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3143 myEndTextField->create();
3145 FXLabel* parameterLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3147 parameterLabel->create();
3149 myParametersComboBox =
new FXComboBox(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3151 myParametersComboBox->create();
3153 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->recalc();
3160 updateIntervalBar();
3162 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->show();
3169 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->hide();
3176 if (myUpdateInterval && myViewNet->getNet()) {
3183 myParameters.clear();
3185 for (
const auto& dataSet : myViewNet->getNet()->getAttributeCarriers()->getDataSets()) {
3187 myDataSets.push_back(dataSet->getID());
3189 for (
const auto& interval : dataSet->getDataIntervalChildren()) {
3192 begin = interval.first;
3195 end = interval.first;
3198 for (
const auto& genericData : interval.second->getGenericDataChildren()) {
3200 for (
const auto& parameter : genericData->getParametersMap()) {
3201 myParameters.insert(parameter.first);
3207 const std::string previousDataSet = myDataSetsComboBox->getText().text();
3209 const std::string previousBegin = (myIntervalCheckBox->getCheck() == TRUE) ? myBeginTextField->getText().text() :
"";
3210 const std::string previousEnd = (myIntervalCheckBox->getCheck() == TRUE) ? myEndTextField->getText().text() :
"";
3212 const std::string previousParameter = myParametersComboBox->getText().text();
3214 myDataSetsComboBox->clearItems();
3215 myParametersComboBox->clearItems();
3217 myDataSetsComboBox->appendItem(
"<all>");
3218 myParametersComboBox->appendItem(
"<all>");
3220 for (
const auto& dataSet : myDataSets) {
3221 myDataSetsComboBox->appendItem(dataSet.c_str());
3224 myBeginTextField->setText(
toString(begin).c_str());
3225 myEndTextField->setText(
toString(end).c_str());
3227 for (
const auto& parameter : myParameters) {
3228 myParametersComboBox->appendItem(parameter.c_str());
3231 myDataSetsComboBox->setCurrentItem(0, FALSE);
3232 for (
int i = 0; i < myDataSetsComboBox->getNumItems(); i++) {
3233 if (myDataSetsComboBox->getItem(i).text() == previousDataSet) {
3234 myDataSetsComboBox->setCurrentItem(i);
3238 if (myIntervalCheckBox->getCheck() == TRUE) {
3239 myBeginTextField->setText(previousBegin.c_str());
3240 myEndTextField->setText(previousEnd.c_str());
3243 myParametersComboBox->setCurrentItem(0, FALSE);
3244 for (
int i = 0; i < myParametersComboBox->getNumItems(); i++) {
3245 if (myParametersComboBox->getItem(i).text() == previousParameter) {
3246 myParametersComboBox->setCurrentItem(i);
3250 if (myDataSetsComboBox->getNumItems() < 10) {
3251 myDataSetsComboBox->setNumVisible(myDataSetsComboBox->getNumItems());
3253 myDataSetsComboBox->setNumVisible(10);
3255 if (myParametersComboBox->getNumItems() < 10) {
3256 myParametersComboBox->setNumVisible(myParametersComboBox->getNumItems());
3258 myParametersComboBox->setNumVisible(10);
3264 enableIntervalBar();
3266 disableIntervalBar();
3269 myUpdateInterval =
false;
3276 myUpdateInterval =
true;
3282 if (myGenericDataTypesComboBox->isEnabled() && (myGenericDataTypesComboBox->getTextColor() == FXRGB(0, 0, 0))) {
3297 if (!myDataSetsComboBox->isEnabled() ||
3298 (myDataSetsComboBox->getCurrentItem() == 0) ||
3299 (myDataSetsComboBox->getTextColor() == FXRGB(255, 0, 0))) {
3309 if (!myIntervalCheckBox->isEnabled() || (myIntervalCheckBox->getCheck() == FALSE)) {
3312 return GNEAttributeCarrier::parse<double>(myBeginTextField->getText().text());
3319 if (!myIntervalCheckBox->isEnabled() || (myIntervalCheckBox->getCheck() == FALSE)) {
3322 return GNEAttributeCarrier::parse<double>(myEndTextField->getText().text());
3329 if (!myParametersComboBox->isEnabled() ||
3330 (myParametersComboBox->getCurrentItem() == 0) ||
3331 (myParametersComboBox->getTextColor() == FXRGB(255, 0, 0))) {
3334 return myParametersComboBox->getText().text();
3341 if ((myGenericDataTypesComboBox->getText() ==
"<all>") ||
3345 myGenericDataTypesComboBox->setTextColor(FXRGB(0, 0, 0));
3347 myGenericDataTypesComboBox->setTextColor(FXRGB(255, 0, 0));
3350 myViewNet->updateViewNet();
3357 if (std::find(myDataSets.begin(), myDataSets.end(), myDataSetsComboBox->getText().text()) != myDataSets.end()) {
3358 myDataSetsComboBox->setTextColor(FXRGB(0, 0, 0));
3360 myDataSetsComboBox->setTextColor(FXRGB(255, 0, 0));
3363 myViewNet->updateViewNet();
3370 if (myIntervalCheckBox->isEnabled() && (myIntervalCheckBox->getCheck() == TRUE)) {
3371 myBeginTextField->enable();
3372 myEndTextField->enable();
3374 myBeginTextField->disable();
3375 myEndTextField->disable();
3378 myViewNet->updateViewNet();
3384 if (myBeginTextField->getText().empty()) {
3385 myBeginTextField->setText(
toString(myViewNet->getNet()->getDataSetIntervalMinimumBegin()).c_str());
3386 myBeginTextField->setTextColor(FXRGB(0, 0, 0));
3387 }
else if (GNEAttributeCarrier::canParse<double>(myBeginTextField->getText().text())) {
3388 myBeginTextField->setTextColor(FXRGB(0, 0, 0));
3390 myBeginTextField->setTextColor(FXRGB(255, 0, 0));
3393 myViewNet->updateViewNet();
3399 if (myEndTextField->getText().empty()) {
3400 myEndTextField->setText(
toString(myViewNet->getNet()->getDataSetIntervalMaximumEnd()).c_str());
3401 myEndTextField->setTextColor(FXRGB(0, 0, 0));
3402 }
else if (GNEAttributeCarrier::canParse<double>(myEndTextField->getText().text())) {
3403 myEndTextField->setTextColor(FXRGB(0, 0, 0));
3405 myEndTextField->setTextColor(FXRGB(255, 0, 0));
3408 myViewNet->updateViewNet();
3415 if (myParameters.count(myParametersComboBox->getText().text()) > 0) {
3416 myParametersComboBox->setTextColor(FXRGB(0, 0, 0));
3418 myParametersComboBox->setTextColor(FXRGB(255, 0, 0));
3421 myViewNet->updateViewNet();
3429 myGenericDataTypesComboBox->enable();
3430 myDataSetsComboBox->enable();
3431 myIntervalCheckBox->enable();
3432 if (myIntervalCheckBox->getCheck() == TRUE) {
3433 myBeginTextField->enable();
3434 myEndTextField->enable();
3436 myBeginTextField->disable();
3437 myEndTextField->disable();
3439 myParametersComboBox->enable();
3446 myGenericDataTypesComboBox->disable();
3447 myDataSetsComboBox->disable();
3448 myIntervalCheckBox->disable();
3449 myBeginTextField->disable();
3450 myEndTextField->disable();
3451 myParametersComboBox->disable();
3459 inspectButton(nullptr),
3460 deleteButton(nullptr),
3461 selectButton(nullptr),
3462 myViewNet(viewNet) {
3469 inspectButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3470 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3471 std::string(
"\t") +
TL(
"Set inspect mode") + std::string(
"\t") +
TL(
"Mode for inspect elements and change their attributes. (I)"),
3473 inspectButton->create();
3475 deleteButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3476 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3477 std::string(
"\t") +
TL(
"Set delete mode") + std::string(
"\t") +
TL(
"Mode for delete elements. (D)"),
3479 deleteButton->create();
3481 selectButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3482 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3483 std::string(
"\t") + (
"Set select mode") + std::string(
"\t") + (
"Mode for select elements. (S)"),
3485 selectButton->create();
3487 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
3493 inspectButton->show();
3494 deleteButton->show();
3495 selectButton->show();
3501 inspectButton->hide();
3502 deleteButton->hide();
3503 selectButton->hide();
3509 inspectButton->setChecked(
false);
3510 deleteButton->setChecked(
false);
3511 selectButton->setChecked(
false);
3517 inspectButton->update();
3518 deleteButton->update();
3519 selectButton->update();
3527 moveNetworkElementsButton(nullptr),
3528 createEdgeButton(nullptr),
3529 connectionButton(nullptr),
3530 trafficLightButton(nullptr),
3531 additionalButton(nullptr),
3532 crossingButton(nullptr),
3534 shapeButton(nullptr),
3535 prohibitionButton(nullptr),
3536 wireButton(nullptr),
3537 myViewNet(viewNet) {
3544 moveNetworkElementsButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3545 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3546 std::string(
"\t") +
TL(
"Set move mode") + std::string(
"\t") +
TL(
"Mode for move elements. (M)"),
3548 moveNetworkElementsButton->create();
3550 createEdgeButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3551 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3552 std::string(
"\t") +
TL(
"Set create edge mode") + std::string(
"\t") +
TL(
"Mode for creating junction and edges. (E)"),
3554 createEdgeButton->create();
3556 connectionButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3557 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3558 std::string(
"\t") +
TL(
"Set connection mode") + std::string(
"\t") +
TL(
"Mode for edit connections between lanes. (C)"),
3560 connectionButton->create();
3562 prohibitionButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3563 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3564 std::string(
"\t") +
TL(
"Set prohibition mode") + std::string(
"\t") +
TL(
"Mode for editing connection prohibitions. (H)"),
3566 prohibitionButton->create();
3568 trafficLightButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3569 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3570 std::string(
"\t") +
TL(
"Set traffic light mode") + std::string(
"\t") +
TL(
"Mode for edit traffic lights over junctions. (T)"),
3572 trafficLightButton->create();
3574 additionalButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3575 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3576 std::string(
"\t") +
TL(
"Set additional mode") + std::string(
"\t") +
TL(
"Mode for adding additional elements. (A)"),
3578 additionalButton->create();
3580 crossingButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3581 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3582 std::string(
"\t") +
TL(
"Set crossing mode") + std::string(
"\t") +
TL(
"Mode for creating crossings between edges. (R)"),
3584 crossingButton->create();
3586 TAZButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3587 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3588 std::string(
"\t") +
TL(
"Set TAZ mode") + std::string(
"\t") +
TL(
"Mode for creating Traffic Assignment Zones. (Z)"),
3590 TAZButton->create();
3592 shapeButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3593 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3594 std::string(
"\t") +
TL(
"Set polygon mode") + std::string(
"\t") +
TL(
"Mode for creating polygons and POIs. (P)"),
3596 shapeButton->create();
3598 wireButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3599 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3600 std::string(
"\t") +
TL(
"Set wire mode") + std::string(
"\t") +
TL(
"Mode for editing wires. (W)"),
3602 wireButton->create();
3604 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
3610 moveNetworkElementsButton->show();
3611 createEdgeButton->show();
3612 connectionButton->show();
3613 trafficLightButton->show();
3614 additionalButton->show();
3615 crossingButton->show();
3617 shapeButton->show();
3618 prohibitionButton->show();
3625 moveNetworkElementsButton->hide();
3626 createEdgeButton->hide();
3627 connectionButton->hide();
3628 trafficLightButton->hide();
3629 additionalButton->hide();
3630 crossingButton->hide();
3632 shapeButton->hide();
3633 prohibitionButton->hide();
3640 moveNetworkElementsButton->setChecked(
false);
3641 createEdgeButton->setChecked(
false);
3642 connectionButton->setChecked(
false);
3643 trafficLightButton->setChecked(
false);
3644 additionalButton->setChecked(
false);
3645 crossingButton->setChecked(
false);
3646 TAZButton->setChecked(
false);
3647 shapeButton->setChecked(
false);
3648 prohibitionButton->setChecked(
false);
3649 wireButton->setChecked(
false);
3655 moveNetworkElementsButton->update();
3656 createEdgeButton->update();
3657 connectionButton->update();
3658 trafficLightButton->update();
3659 additionalButton->update();
3660 crossingButton->update();
3661 TAZButton->update();
3662 shapeButton->update();
3663 prohibitionButton->update();
3664 wireButton->update();
3672 myViewNet(viewNet) {
3679 moveDemandElementsButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3680 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3681 std::string(
"\t") +
TL(
"Set move mode") + std::string(
"\t") +
TL(
"Mode for move elements. (M)"),
3683 moveDemandElementsButton->create();
3685 routeButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3686 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3687 std::string(
"\t") +
TL(
"Create route mode") + std::string(
"\t") +
TL(
"Mode for creating routes. (R)"),
3689 routeButton->create();
3691 vehicleButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3692 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3693 std::string(
"\t") +
TL(
"Create vehicle mode") + std::string(
"\t") +
TL(
"Mode for creating vehicles. (V)"),
3695 vehicleButton->create();
3697 typeButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3698 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3699 std::string(
"\t") +
TL(
"Create type mode") + std::string(
"\t") +
TL(
"Mode for creating types (vehicles, person and containers). (T)"),
3701 typeButton->create();
3703 typeDistributionButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3704 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3705 std::string(
"\t") +
TL(
"Create type distribution mode") + std::string(
"\t") +
TL(
"Mode for creating type distribution. (U)"),
3707 typeDistributionButton->create();
3709 stopButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3710 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3711 std::string(
"\t") +
TL(
"Create stop mode") + std::string(
"\t") +
TL(
"Mode for creating stops. (A)"),
3713 stopButton->create();
3715 personButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3716 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3717 std::string(
"\t") +
TL(
"Create person mode") + std::string(
"\t") +
TL(
"Mode for creating persons. (P)"),
3719 personButton->create();
3721 personPlanButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3722 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3723 std::string(
"\t") +
TL(
"Create person plan mode") + std::string(
"\t") +
TL(
"Mode for creating person plans. (L)"),
3725 personPlanButton->create();
3727 containerButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3728 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3729 std::string(
"\t") +
TL(
"Create container mode") + std::string(
"\t") +
TL(
"Mode for creating containers. (C)"),
3731 containerButton->create();
3733 containerPlanButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3734 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3735 std::string(
"\t") +
TL(
"Create container plan mode") + std::string(
"\t") +
TL(
"Mode for creating container plans. (H)"),
3737 containerPlanButton->create();
3739 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
3745 moveDemandElementsButton->show();
3746 routeButton->show();
3747 vehicleButton->show();
3749 typeDistributionButton->show();
3751 personButton->show();
3752 personPlanButton->show();
3753 containerButton->show();
3754 containerPlanButton->show();
3760 moveDemandElementsButton->hide();
3761 routeButton->hide();
3762 vehicleButton->hide();
3764 typeDistributionButton->hide();
3766 personButton->hide();
3767 personPlanButton->hide();
3768 containerButton->hide();
3769 containerPlanButton->hide();
3775 moveDemandElementsButton->setChecked(
false);
3776 routeButton->setChecked(
false);
3777 vehicleButton->setChecked(
false);
3778 typeButton->setChecked(
false);
3779 typeDistributionButton->setChecked(
false);
3780 stopButton->setChecked(
false);
3781 personButton->setChecked(
false);
3782 personPlanButton->setChecked(
false);
3783 containerButton->setChecked(
false);
3784 containerPlanButton->setChecked(
false);
3790 moveDemandElementsButton->update();
3791 routeButton->update();
3792 vehicleButton->update();
3793 typeButton->update();
3794 typeDistributionButton->update();
3795 stopButton->update();
3796 personButton->update();
3797 personPlanButton->update();
3798 containerButton->update();
3799 containerPlanButton->update();
3807 myViewNet(viewNet) {
3814 edgeDataButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3815 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3816 std::string(
"\t") +
TL(
"Create edge data mode") + std::string(
"\t") +
TL(
"Mode for creating edge datas. (E)"),
3818 edgeDataButton->create();
3820 edgeRelDataButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3821 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3822 std::string(
"\t") +
TL(
"Create edge relation data mode") + std::string(
"\t") +
TL(
"Mode for creating edge relation datas. (R)"),
3824 edgeRelDataButton->create();
3826 TAZRelDataButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3827 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3828 std::string(
"\t") +
TL(
"Create TAZ relation data mode") + std::string(
"\t") +
TL(
"Mode for creating TAZ relation datas. (Z)"),
3830 TAZRelDataButton->create();
3832 meanDataButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3833 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
3834 std::string(
"\t") +
TL(
"MeanData mode") + std::string(
"\t") +
TL(
"Mode for MeanData elements. (M)"),
3836 meanDataButton->create();
3838 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
3844 edgeDataButton->show();
3845 edgeRelDataButton->show();
3846 TAZRelDataButton->show();
3847 meanDataButton->show();
3853 edgeDataButton->hide();
3854 edgeRelDataButton->hide();
3855 TAZRelDataButton->hide();
3856 meanDataButton->hide();
3862 edgeDataButton->setChecked(
false);
3863 edgeRelDataButton->setChecked(
false);
3864 TAZRelDataButton->setChecked(
false);
3865 meanDataButton->setChecked(
false);
3871 edgeDataButton->update();
3872 edgeRelDataButton->update();
3873 TAZRelDataButton->update();
3874 meanDataButton->update();
3883 myEditedNetworkElement(nullptr),
3890 if (element && (myEditedNetworkElement ==
nullptr)) {
3892 myPreviousNetworkEditMode = myViewNet->myEditModes.networkEditMode;
3896 myEditedNetworkElement = element;
3900 myViewNet->updateViewNet();
3908 if (myEditedNetworkElement !=
nullptr) {
3910 myEditedNetworkElement->setShapeEdited(
false);
3912 myEditedNetworkElement =
nullptr;
3914 if (myViewNet->myEditModes.networkEditMode != myPreviousNetworkEditMode) {
3915 myViewNet->myEditModes.setNetworkEditMode(myPreviousNetworkEditMode);
3924 if (myEditedNetworkElement !=
nullptr) {
3929 stopEditCustomShape();
3936 return myEditedNetworkElement;
3945 const Position viewPosition,
const double exaggeration,
const double size,
3946 const double offsetx,
const double offsety) {
3948 if (checkDrawing(AC, type, exaggeration)) {
3954 glTranslated(offsetx, offsety, 0);
3956 glRotated(180, 0, 0, 1);
3977 if (exaggeration == 0) {
3981 if (viewNet->getEditModes().isCurrentSupermodeNetwork() &&
3996 if (s.drawForPositionSelection || s.drawForRectangleSelection) {
4000 if (!s.drawDetail(s.detailSettings.lockIcon, exaggeration)) {
4011const std::vector<RGBColor>&
4036 }
else if (value >= max) {
4040 const double procent = ((value - min) * 100) / (max - min);
4044 }
else if (procent >= 100) {
4054std::vector<GUIGlObject*>
4056 std::vector<GUIGlObject*> filteredGLObjects;
4057 if (GLObjects.size() > 0) {
4058 const auto firstLayer = GLObjects.front()->getType();
4059 for (
const auto& GLObject : GLObjects) {
4061 (GLO_RIDE <= GLObject->getType()) && (GLObject->getType() <=
GLO_TRANSHIP)) {
4062 filteredGLObjects.push_back(GLObject);
4065 filteredGLObjects.push_back(GLObject);
4067 (GLO_VEHICLE <= GLObject->getType()) && (GLObject->getType() <=
GLO_ROUTEFLOW)) {
4068 filteredGLObjects.push_back(GLObject);
4070 (GLO_PERSON <= GLObject->getType()) && (GLObject->getType() <=
GLO_PERSONFLOW)) {
4071 filteredGLObjects.push_back(GLObject);
4073 (GLO_CONTAINER <= GLObject->getType()) && (GLObject->getType() <=
GLO_CONTAINERFLOW)) {
4074 filteredGLObjects.push_back(GLObject);
4075 }
else if (GLObject->getType() == firstLayer) {
4076 filteredGLObjects.push_back(GLObject);
4080 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_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_INTERVALBAR_BEGIN
begin changed in InterbalBar
@ MID_GNE_DATAVIEWOPTIONS_TAZRELONLYTO
toggle draw TAZRel only to
@ MID_GNE_DATAVIEWOPTIONS_TOGGLEDRAWJUNCTIONSHAPE
toggle draw junction shape
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWTAZELEMENTS
show TAZ elements
@ MID_GNE_DEMANDVIEWOPTIONS_LOCKPERSON
lock person
@ MID_HOTKEY_Z_MODE_TAZ_TAZREL
hotkey for mode editing TAZ and TAZRel
@ MID_GNE_DEMANDVIEWOPTIONS_TOGGLEDRAWJUNCTIONSHAPE
toggle draw junction shape
@ MID_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_HOTKEY_D_MODE_SINGLESIMULATIONSTEP_DELETE
hotkey for perform a single simulation step in SUMO and set delete mode in netedit
@ MID_GNE_NETWORKVIEWOPTIONS_CHAINEDGES
create edges in chain mode
@ MID_GNE_DATAVIEWOPTIONS_SHOWDEMANDELEMENTS
show demand elements
@ MID_HOTKEY_C_MODE_CONNECT_CONTAINER
hotkey for mode connecting lanes AND container
@ MID_HOTKEY_H_MODE_PROHIBITION_CONTAINERPLAN
hotkey for mode prohibition AND container plan
@ MID_HOTKEY_T_MODE_TLS_TYPE
hotkey for mode editing TLS AND Vehicle Types
@ MID_GNE_DEMANDVIEWOPTIONS_HIDESHAPES
hide shapes
@ MID_GNE_DATAVIEWOPTIONS_SHOWADDITIONALS
show additionals
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWBUBBLES
show junctions as bubbles
@ MID_GNE_INTERVALBAR_END
end changed in InterbalBar
@ MID_GNE_NETWORKVIEWOPTIONS_EXTENDSELECTION
extend selection
@ MID_HOTKEY_S_MODE_STOPSIMULATION_SELECT
hotkey for stop simulation in SUMO and set select mode in netedit
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWSUBADDITIONALS
show sub-additionals
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWALLCONTAINERPLANS
show all container plans
@ MID_HOTKEY_F4_SUPERMODE_DATA
select data supermode in netedit
@ MID_HOTKEY_U_MODE_TYPEDISTRIBUTION
hotkey for mode type distribution
@ MID_HOTKEY_A_MODE_STARTSIMULATION_ADDITIONALSTOP
hotkey for start simulation in SUMO and set editing mode additionals AND stops 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_CTRL_SHIFT_M_SAVEMEANDATAS
save Mean Datas
@ MID_HOTKEY_L_MODE_PERSONPLAN
hotkey for mode person plan
@ MID_HOTKEY_V_MODE_VEHICLE
hotkey for mode create vehicles
@ MID_HOTKEY_I_MODE_INSPECT
hotkey for mode inspecting object attributes
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWDEMANDELEMENTS
show demand elements
@ MID_HOTKEY_CTRL_SHIFT_E_SAVENETEDITCONFIG
save netedit Config
@ MID_GNE_DEMANDVIEWOPTIONS_HIDENONINSPECTED
hide non-inspected demand element
@ MID_HOTKEY_CTRL_SHIFT_A_SAVEADDITIONALS
Save Additional Elements.
@ MID_GNE_INTERVALBAR_GENERICDATATYPE
generic data selected
@ MID_GNE_NETWORKVIEWOPTIONS_CHANGEALLPHASES
change all phases
@ MID_GNE_DATAVIEWOPTIONS_SHOWSHAPES
show shapes
@ MID_HOTKEY_E_MODE_EDGE_EDGEDATA
hotkey for mode adding edges AND edgeDatas
@ MID_GNE_DATAVIEWOPTIONS_TAZRELONLYFROM
toggle draw TAZRel only from
@ MID_GNE_NETWORKVIEWOPTIONS_TOGGLEDRAWJUNCTIONSHAPE
toggle draw junction shape
@ MID_GNE_DEMANDVIEWOPTIONS_DRAWSPREADVEHICLES
Draw vehicles in begin position or spread in lane.
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWOVERLAPPEDROUTES
show overlapped routes
@ MID_HOTKEY_CTRL_SHIFT_S_SAVESUMOCONFIG
save SUMOConfig (SUMO AND netedit)
@ MID_GNE_INTERVALBAR_DATASET
data set selected
@ MID_HOTKEY_M_MODE_MOVE_MEANDATA
hotkey for mode moving element AND mean data
@ MID_HOTKEY_F2_SUPERMODE_NETWORK
select network supermode in netedit
@ MID_GNE_DEMANDVIEWOPTIONS_LOCKCONTAINER
lock container
@ MID_GNE_NETWORKVIEWOPTIONS_SELECTEDGES
select edges
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWTRIPS
show all trips
@ MID_GNE_NETWORKVIEWOPTIONS_TOGGLEGRID
show grid
@ MID_GNE_INTERVALBAR_LIMITED
enable/disable show data elements by interval
@ MID_HOTKEY_P_MODE_POLYGON_PERSON
hotkey for mode creating polygons
#define GUIDesignComboBoxWidth180
comboBox with thick frame, width 180
#define GUIDesignComboBoxNCol
number of column of every combo box
#define GUIDesignButtonPopup
checkable button placed in popup (for example, locate buttons)
#define GUIDesignButtonToolbar
little button with icon placed in navigation toolbar
#define GUIDesignTextFieldNCol
Num of column of text field.
#define GUIDesignTextFieldFixedRestricted(width, type)
text field with fixed width
#define GUIDesignMFXCheckableButtonSquare
#define GUIDesignButtonToolbarLocator
little checkable button with icon placed in navigation toolbar used specify for Locator
#define GUIDesignMFXCheckableButtonSupermode
checkable button with icon placed in navigation toolbar for supermodes
#define GUIDesignCheckButtonAttribute
checkButton without thick extended over the frame used for attributes
#define GUIDesignLabelThickedFixed(width)
label thicked, icon before text, text centered and custom width
@ GLO_EDGERELDATA
edge relation data
@ GLO_TAZRELDATA
TAZ relation data.
@ GLO_WALKINGAREA
a walkingArea
@ GLO_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
@ SAVE_ADDITIONALELEMENTS
@ DEMANDMODE_CHECKBOX_HIDENONINSPECTEDDEMANDELEMENTS
@ NETWORKMODE_CHECKBOX_HIDECONNECTIONS
@ DEMANDMODE_CHECKBOX_SHOWTRIPS
@ COMMONMODE_CHECKBOX_TOGGLEDRAWJUNCTIONSHAPE
@ DATAMODE_CHECKBOX_SHOWSHAPES
@ NETWORKMODE_CHECKBOX_SELECTEDGES
@ COMMONMODE_CHECKBOX_SHOWDEMANDELEMENTS
@ DEMANDMODE_CHECKBOX_LOCKPERSON
@ NETWORKMODE_CHECKBOX_APPLYTOALLPHASES
@ DATAMODE_CHECKBOX_TAZRELONLYTO
@ NETWORKMODE_CHECKBOX_AUTOSELECTJUNCTIONS
@ DATAMODE_CHECKBOX_TAZRELDRAWING
@ NETWORKMODE_CHECKBOX_SHOWCONNECTIONS
@ DEMANDMODE_CHECKBOX_SHOWPERSONPLANS
@ DEMANDMODE_CHECKBOX_HIDESHAPES
@ DATAMODE_CHECKBOX_TAZDRAWFILL
@ NETWORKMODE_CHECKBOX_ELEVATION
@ COMMONMODE_CHECKBOX_SPREADVEHICLE
@ DEMANDMODE_CHECKBOX_LOCKCONTAINER
@ NETWORKMODE_CHECKBOX_SHOWSUBADDITIONALS
@ NETWORKMODE_CHECKBOX_SHOWTAZELEMENTS
@ NETWORKMODE_CHECKBOX_CHAIN
@ DEMANDMODE_CHECKBOX_SHOWOVERLAPPEDROUTES
@ NETWORKMODE_CHECKBOX_ASKFORMERGE
@ COMMONMODE_CHECKBOX_TOGGLEGRID
@ DEMANDMODE_CHECKBOX_SHOWCONTAINERPLANS
@ NETWORKMODE_CHECKBOX_TWOWAY
#define WRITE_ERRORF(...)
SumoXMLTag
Numbers representing SUMO-XML - element names.
@ SUMO_TAG_EDGEREL
a relation between two edges
@ SUMO_TAG_NOTHING
invalid tag
@ 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
@ SUMO_ATTR_BEGIN
weights: time range begin
@ SUMO_ATTR_END
weights: time range end
const double INVALID_DOUBLE
invalid double
#define UNUSED_PARAMETER(x)
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
A class that stores a 2D geometrical boundary.
void add(double x, double y, double z=0)
Makes the boundary include the given coordinate.
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
static void popMatrix()
pop matrix
static void pushMatrix()
push matrix
An Element which don't belong to GNENet but has influence in the simulation.
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 shortDataElements()
short data elements by begin
void filterLockedElements(const GNEViewNetHelper::LockManager &lockManager, std::vector< GUIGlObjectType > forcedIgnoredTiped={})
filter locked elements
void updateAttributeCarriers(ObjectsContainer &container, GNEAttributeCarrier *AC)
update attribute carrier elements
std::vector< GUIGlObject * > filterDuplicatedObjects(const std::vector< GUIGlObject * > &GUIGlObjects) const
filter duplicated objects
GNEEdge * getEdgeFront() const
get front edge or a pointer to nullptr
const std::vector< GNEJunction * > & getClickedJunctions() const
get vector with clicked junctions
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.
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
NetworkEditMode networkEditMode
the current Network edit mode
bool isCurrentSupermodeDemand() const
@check if current supermode is Demand
void setDemandEditMode(DemandEditMode demandMode, const bool force=false)
set Demand edit mode
bool isCurrentSupermodeData() const
@check if current supermode is Data
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
EditModes(GNEViewNet *viewNet)
default constructor
void setDataEditMode(DataEditMode dataMode, const bool force=false)
set Data edit mode
GNENetworkElement * getEditedNetworkElement() const
pointer to edited network element
void stopEditCustomShape()
edit edit shape
EditNetworkElementShapes(GNEViewNet *viewNet)
default constructor
void 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()
destructor
SaveElements(GNEViewNet *viewNet)
default constructor
void setSaveIndividualFiles(bool value)
enable or disable save individual files
void buildSaveElementsButtons()
build save buttons
void finishRectangleSelection()
finish rectangle selection
void drawRectangleSelection(const RGBColor &color) const
draw rectangle selection
void beginRectangleSelection()
begin rectangle selection
void moveRectangleSelection()
move rectangle selection
void processBoundarySelection(const Boundary &boundary)
Process boundary Selection.
void 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
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