60 mySwapLane2edge(false) {
67 mySwapLane2edge =
false;
69 myEdgeObjects.clearElements();
70 myLaneObjects.clearElements();
72 sortGUIGlObjects(GUIGlObjects);
74 for (
const auto& glObject : myEdgeObjects.GUIGlObjects) {
80 updateAttributeCarriers(myEdgeObjects, AC);
84 updateNetworkElements(myEdgeObjects, AC);
87 updateAdditionalElements(myEdgeObjects, AC);
90 updateTAZElements(myEdgeObjects, AC);
93 updateShapeElements(myEdgeObjects, AC);
96 updateDemandElements(myEdgeObjects, AC);
99 updateGenericDataElements(myEdgeObjects, AC);
104 updateGUIGlObjects(myEdgeObjects);
106 for (
const auto& glObject : myLaneObjects.GUIGlObjects) {
112 updateAttributeCarriers(myLaneObjects, AC);
116 updateNetworkElements(myLaneObjects, AC);
119 updateAdditionalElements(myLaneObjects, AC);
122 updateTAZElements(myLaneObjects, AC);
125 updateShapeElements(myLaneObjects, AC);
128 updateDemandElements(myLaneObjects, AC);
131 updateGenericDataElements(myLaneObjects, AC);
136 updateGUIGlObjects(myLaneObjects);
143 mySwapLane2edge =
true;
149 if (getGUIGlObjectFront()) {
150 return getGUIGlObjectFront()->getGlID();
159 if (getGUIGlObjectFront()) {
160 return getGUIGlObjectFront()->getType();
169 if (mySwapLane2edge) {
170 if (myEdgeObjects.attributeCarriers.size() > 0) {
171 return myEdgeObjects.GUIGlObjects.front();
176 if (myLaneObjects.attributeCarriers.size() > 0) {
177 return myLaneObjects.GUIGlObjects.front();
187 if (mySwapLane2edge) {
188 if (myEdgeObjects.attributeCarriers.size() > 0) {
189 return myEdgeObjects.attributeCarriers.front();
194 if (myLaneObjects.attributeCarriers.size() > 0) {
195 return myLaneObjects.attributeCarriers.front();
205 if (mySwapLane2edge) {
206 if (myEdgeObjects.networkElements.size() > 0) {
207 return myEdgeObjects.networkElements.front();
212 if (myLaneObjects.networkElements.size() > 0) {
213 return myLaneObjects.networkElements.front();
223 if (mySwapLane2edge) {
224 if (myEdgeObjects.additionals.size() > 0) {
225 return myEdgeObjects.additionals.front();
230 if (myLaneObjects.additionals.size() > 0) {
231 return myLaneObjects.additionals.front();
241 if (mySwapLane2edge) {
242 if (myEdgeObjects.shapes.size() > 0) {
243 return myEdgeObjects.shapes.front();
248 if (myLaneObjects.shapes.size() > 0) {
249 return myLaneObjects.shapes.front();
259 if (mySwapLane2edge) {
260 if (myEdgeObjects.TAZElements.size() > 0) {
261 return myEdgeObjects.TAZElements.front();
266 if (myLaneObjects.TAZElements.size() > 0) {
267 return myLaneObjects.TAZElements.front();
277 if (mySwapLane2edge) {
278 if (myEdgeObjects.demandElements.size() > 0) {
279 return myEdgeObjects.demandElements.front();
284 if (myLaneObjects.demandElements.size() > 0) {
285 return myLaneObjects.demandElements.front();
295 if (mySwapLane2edge) {
296 if (myEdgeObjects.genericDatas.size() > 0) {
297 return myEdgeObjects.genericDatas.front();
302 if (myLaneObjects.genericDatas.size() > 0) {
303 return myLaneObjects.genericDatas.front();
313 if (mySwapLane2edge) {
314 if (myEdgeObjects.junctions.size() > 0) {
315 return myEdgeObjects.junctions.front();
320 if (myLaneObjects.junctions.size() > 0) {
321 return myLaneObjects.junctions.front();
331 if (mySwapLane2edge) {
332 if (myEdgeObjects.edges.size() > 0) {
333 return myEdgeObjects.edges.front();
338 if (myLaneObjects.edges.size() > 0) {
339 return myLaneObjects.edges.front();
349 if (mySwapLane2edge) {
350 if (myEdgeObjects.lanes.size() > 0) {
351 return myEdgeObjects.lanes.front();
356 if (myLaneObjects.lanes.size() > 0) {
357 return myLaneObjects.lanes.front();
365 const std::vector<GNELane*>&
367 if (mySwapLane2edge) {
368 return myEdgeObjects.lanes;
370 return myLaneObjects.lanes;
377 if (mySwapLane2edge) {
378 if (myEdgeObjects.crossings.size() > 0) {
379 return myEdgeObjects.crossings.front();
384 if (myLaneObjects.crossings.size() > 0) {
385 return myLaneObjects.crossings.front();
395 if (mySwapLane2edge) {
396 if (myEdgeObjects.connections.size() > 0) {
397 return myEdgeObjects.connections.front();
402 if (myLaneObjects.connections.size() > 0) {
403 return myLaneObjects.connections.front();
413 if (mySwapLane2edge) {
414 if (myEdgeObjects.internalLanes.size() > 0) {
415 return myEdgeObjects.internalLanes.front();
420 if (myLaneObjects.internalLanes.size() > 0) {
421 return myLaneObjects.internalLanes.front();
431 if (mySwapLane2edge) {
432 if (myEdgeObjects.POIs.size() > 0) {
433 return myEdgeObjects.POIs.front();
438 if (myLaneObjects.POIs.size() > 0) {
439 return myLaneObjects.POIs.front();
449 if (mySwapLane2edge) {
450 if (myEdgeObjects.polys.size() > 0) {
451 return myEdgeObjects.polys.front();
456 if (myLaneObjects.polys.size() > 0) {
457 return myLaneObjects.polys.front();
467 if (mySwapLane2edge) {
468 if (myEdgeObjects.TAZs.size() > 0) {
469 return myEdgeObjects.TAZs.front();
474 if (myLaneObjects.TAZs.size() > 0) {
475 return myLaneObjects.TAZs.front();
485 if (mySwapLane2edge) {
486 if (myEdgeObjects.edgeDatas.size() > 0) {
487 return myEdgeObjects.edgeDatas.front();
492 if (myLaneObjects.edgeDatas.size() > 0) {
493 return myLaneObjects.edgeDatas.front();
503 if (mySwapLane2edge) {
504 if (myEdgeObjects.edgeRelDatas.size() > 0) {
505 return myEdgeObjects.edgeRelDatas.front();
510 if (myLaneObjects.edgeRelDatas.size() > 0) {
511 return myLaneObjects.edgeRelDatas.front();
519 const std::vector<GNEAttributeCarrier*>&
521 if (mySwapLane2edge) {
522 return myEdgeObjects.attributeCarriers;
524 return myLaneObjects.attributeCarriers;
535 GUIGlObjects.clear();
536 attributeCarriers.clear();
537 networkElements.clear();
541 demandElements.clear();
547 internalLanes.clear();
551 genericDatas.clear();
553 edgeRelDatas.clear();
560 std::map<double, std::vector<GUIGlObject*> > mySortedGUIGlObjects;
562 for (
const auto& GLObject : GUIGlObjects) {
564 const Shape* shape =
dynamic_cast<Shape*
>(GLObject);
566 mySortedGUIGlObjects[shape->
getShapeLayer()].push_back(GLObject);
568 mySortedGUIGlObjects[GLObject->getType()].push_back(GLObject);
572 for (std::map<
double, std::vector<GUIGlObject*> >::reverse_iterator i = mySortedGUIGlObjects.rbegin(); i != mySortedGUIGlObjects.rend(); i++) {
573 for (
const auto& GlObject : i->second) {
577 if (GlObject->getType() ==
GLO_LANE) {
578 myLaneObjects.GUIGlObjects.push_back(GlObject);
580 myEdgeObjects.GUIGlObjects.push_back(GlObject);
581 myLaneObjects.GUIGlObjects.push_back(GlObject);
707 if (additionalElement == myViewNet->getFrontAttributeCarrier()) {
712 container.
additionals.push_back(additionalElement);
722 if (TAZElement == myViewNet->getFrontAttributeCarrier()) {
735 if (AC == myViewNet->getFrontAttributeCarrier()) {
737 container.
TAZs.insert(container.
TAZs.begin(),
TAZ);
752 if (shapeElement == myViewNet->getFrontAttributeCarrier()) {
754 container.
shapes.insert(container.
shapes.begin(), shapeElement);
757 container.
shapes.push_back(shapeElement);
765 if (AC == myViewNet->getFrontAttributeCarrier()) {
767 container.
POIs.insert(container.
POIs.begin(),
POI);
778 if (AC == myViewNet->getFrontAttributeCarrier()) {
780 container.
polys.insert(container.
polys.begin(), poly);
783 container.
polys.push_back(poly);
795 if (demandElement == myViewNet->getFrontAttributeCarrier()) {
854 container.
GUIGlObjects.push_back(attributeCarrrier->getGUIGlObject());
861 mySwapLane2edge(false) {
869 myEventInfo(nullptr) {
875 myEventInfo = (FXEvent*) eventData;
882 return (myEventInfo->state & SHIFTMASK) != 0;
892 return (myEventInfo->state & CONTROLMASK) != 0;
902 return (myEventInfo->state & ALTMASK) != 0;
912 return (myEventInfo->state & LEFTBUTTONMASK) != 0;
922 return (myEventInfo->state & RIGHTBUTTONMASK) != 0;
940 myRelativeClickedPosition = myViewNet->getPositionInformation();
942 const GNENetworkElement* editedElement = myViewNet->myEditNetworkElementShapes.getEditedNetworkElement();
944 if (myViewNet->myObjectsUnderCursor.getJunctionFront() && (myViewNet->myObjectsUnderCursor.getJunctionFront() == editedElement)) {
946 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getJunctionFront()->getMoveOperation();
949 myMoveOperations.push_back(moveOperation);
954 }
else if (myViewNet->myObjectsUnderCursor.getLaneFront() && (myViewNet->myObjectsUnderCursor.getLaneFront() == editedElement)) {
956 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getLaneFront()->getMoveOperation();
959 myMoveOperations.push_back(moveOperation);
964 }
else if (myViewNet->myObjectsUnderCursor.getCrossingFront() && (myViewNet->myObjectsUnderCursor.getCrossingFront() == editedElement)) {
966 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getCrossingFront()->getMoveOperation();
969 myMoveOperations.push_back(moveOperation);
974 }
else if (myViewNet->myObjectsUnderCursor.getConnectionFront() && (myViewNet->myObjectsUnderCursor.getConnectionFront() == editedElement)) {
976 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getConnectionFront()->getMoveOperation();
979 myMoveOperations.push_back(moveOperation);
994 myRelativeClickedPosition = myViewNet->getPositionInformation();
996 const GNEAttributeCarrier* frontAC = myViewNet->myObjectsUnderCursor.getAttributeCarrierFront();
998 if (myViewNet->myObjectsUnderCursor.getPolyFront() && (frontAC == myViewNet->myObjectsUnderCursor.getPolyFront())) {
1000 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getPolyFront()->getMoveOperation();
1002 if (moveOperation) {
1003 myMoveOperations.push_back(moveOperation);
1008 }
else if (myViewNet->myObjectsUnderCursor.getPOIFront() && (frontAC == myViewNet->myObjectsUnderCursor.getPOIFront())) {
1010 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getPOIFront()->getMoveOperation();
1012 if (moveOperation) {
1013 myMoveOperations.push_back(moveOperation);
1018 }
else if (myViewNet->myObjectsUnderCursor.getAdditionalFront() && (frontAC == myViewNet->myObjectsUnderCursor.getAdditionalFront())) {
1020 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getAdditionalFront()->getMoveOperation();
1022 if (moveOperation) {
1023 myMoveOperations.push_back(moveOperation);
1028 }
else if (myViewNet->myObjectsUnderCursor.getTAZFront() && (frontAC == myViewNet->myObjectsUnderCursor.getTAZFront())) {
1030 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getTAZFront()->getMoveOperation();
1032 if (moveOperation) {
1033 myMoveOperations.push_back(moveOperation);
1038 }
else if (myViewNet->myObjectsUnderCursor.getJunctionFront() && (frontAC == myViewNet->myObjectsUnderCursor.getJunctionFront())) {
1040 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getJunctionFront()->getMoveOperation();
1042 if (moveOperation) {
1043 myMoveOperations.push_back(moveOperation);
1048 }
else if ((myViewNet->myObjectsUnderCursor.getEdgeFront() && (frontAC == myViewNet->myObjectsUnderCursor.getEdgeFront())) ||
1049 (myViewNet->myObjectsUnderCursor.getLaneFront() && (frontAC == myViewNet->myObjectsUnderCursor.getLaneFront()))) {
1051 if (myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1053 myViewNet->myObjectsUnderCursor.getEdgeFront()->editEndpoint(myViewNet->getPositionInformation(), myViewNet->myUndoList);
1058 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getEdgeFront()->getMoveOperation();
1060 if (moveOperation) {
1061 myMoveOperations.push_back(moveOperation);
1077 myRelativeClickedPosition = myViewNet->getPositionInformation();
1079 const GNEAttributeCarrier* frontAC = myViewNet->myObjectsUnderCursor.getAttributeCarrierFront();
1081 if (myViewNet->myObjectsUnderCursor.getDemandElementFront() && (frontAC == myViewNet->myObjectsUnderCursor.getDemandElementFront())) {
1083 GNEMoveOperation* moveOperation = myViewNet->myObjectsUnderCursor.getDemandElementFront()->getMoveOperation();
1085 if (moveOperation) {
1086 myMoveOperations.push_back(moveOperation);
1104 if (mouseLeftButtonPressed) {
1106 for (
const auto& moveOperation : myMoveOperations) {
1112 for (
const auto& moveOperation : myMoveOperations) {
1116 delete moveOperation;
1119 myMoveOperations.clear();
1129 for (
const auto& moveOperation : myMoveOperations) {
1132 delete moveOperation;
1135 myMoveOperations.clear();
1143 Position moveOffset = (myViewNet->getPositionInformation() - myViewNet->myMoveSingleElementValues.myRelativeClickedPosition);
1145 if (myViewNet->myNetworkViewOptions.menuCheckMoveElevation->shown() && myViewNet->myNetworkViewOptions.menuCheckMoveElevation->amChecked() == TRUE) {
1160 myMovingSelectedEdge(false),
1168 myClickedPosition = myViewNet->getPositionInformation();
1170 if (myViewNet->myObjectsUnderCursor.getJunctionFront()) {
1171 calculateJunctionSelection();
1172 }
else if (myViewNet->myObjectsUnderCursor.getEdgeFront()) {
1173 calculateEdgeSelection(myViewNet->myObjectsUnderCursor.getEdgeFront());
1183 if (mouseLeftButtonPressed) {
1185 for (
const auto& moveOperation : myMoveOperations) {
1189 }
else if (myMoveOperations.size() > 0) {
1193 for (
const auto& moveOperation : myMoveOperations) {
1197 delete moveOperation;
1200 myViewNet->getUndoList()->end();
1202 myMoveOperations.clear();
1214 for (
const auto& moveOperation : myMoveOperations) {
1217 delete moveOperation;
1220 myViewNet->getUndoList()->end();
1222 myMoveOperations.clear();
1228 return (myMoveOperations.size() > 0);
1234 return myMovingSelectedEdge;
1240 myMovingSelectedEdge =
false;
1246 return myEdgeOffset;
1254 Position moveOffset = (myViewNet->getPositionInformation() - myClickedPosition);
1256 if (myViewNet->myNetworkViewOptions.menuCheckMoveElevation->shown() && myViewNet->myNetworkViewOptions.menuCheckMoveElevation->amChecked() == TRUE) {
1271 const auto selectedJunctions = myViewNet->getNet()->getAttributeCarriers()->getSelectedJunctions();
1273 for (
const auto& junction : selectedJunctions) {
1274 moveOperation = junction->getMoveOperation();
1275 if (moveOperation) {
1276 myMoveOperations.push_back(moveOperation);
1280 const auto selectedEdges = myViewNet->getNet()->getAttributeCarriers()->getSelectedEdges();
1282 for (
const auto& edge : selectedEdges) {
1283 moveOperation = edge->getMoveOperation();
1284 if (moveOperation) {
1285 myMoveOperations.push_back(moveOperation);
1294 const auto selectedJunctions = myViewNet->getNet()->getAttributeCarriers()->getSelectedJunctions();
1296 for (
const auto& junction : selectedJunctions) {
1298 if (moveOperation) {
1299 myMoveOperations.push_back(moveOperation);
1303 myMovingSelectedEdge =
true;
1310 myEdgeOffset = shape.length2D() - shape.nearest_offset_to_point2D(myViewNet->getPositionInformation());
1313 const auto selectedEdges = myViewNet->getNet()->getAttributeCarriers()->getSelectedEdges();
1315 for (
const auto& edge : selectedEdges) {
1318 if (moveOperation) {
1319 myMoveOperations.push_back(moveOperation);
1329 myViewNet(viewNet) {
1350 myViewNet(viewNet) {
1371 selectingUsingRectangle(false),
1372 startDrawing(false),
1373 myViewNet(viewNet) {
1379 selectingUsingRectangle =
true;
1380 selectionCorner1 = myViewNet->getPositionInformation();
1381 selectionCorner2 = selectionCorner1;
1388 startDrawing =
true;
1390 selectionCorner2 = myViewNet->getPositionInformation();
1392 myViewNet->setStatusBarText(
"Selection width:" +
toString(fabs(selectionCorner1.x() - selectionCorner2.x()))
1393 +
" height:" +
toString(fabs(selectionCorner1.y() - selectionCorner2.y()))
1394 +
" diagonal:" +
toString(selectionCorner1.distanceTo2D(selectionCorner2)));
1401 selectingUsingRectangle =
false;
1402 startDrawing =
false;
1409 if ((abs(selectionCorner1.x() - selectionCorner2.x()) > 0.01) &&
1410 (abs(selectionCorner1.y() - selectionCorner2.y()) > 0.01) &&
1411 myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1414 rectangleBoundary.
add(selectionCorner1);
1415 rectangleBoundary.
add(selectionCorner2);
1417 processBoundarySelection(rectangleBoundary);
1422 std::vector<GNEEdge*>
1425 std::vector<GNEEdge*> result;
1427 if ((abs(selectionCorner1.x() - selectionCorner2.x()) > 0.01) &&
1428 (abs(selectionCorner1.y() - selectionCorner2.y()) > 0.01) &&
1429 myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1432 rectangleBoundary.
add(selectionCorner1);
1433 rectangleBoundary.
add(selectionCorner2);
1434 if (myViewNet->makeCurrent()) {
1436 std::set<std::pair<std::string, GNEAttributeCarrier*> > ACsInBoundary = myViewNet->getAttributeCarriersInBoundary(rectangleBoundary);
1438 for (
const auto& AC : ACsInBoundary) {
1439 if (AC.second->getTagProperty().getTag() ==
SUMO_TAG_EDGE) {
1440 result.push_back(
dynamic_cast<GNEEdge*
>(AC.second));
1443 myViewNet->makeNonCurrent();
1458 if (selectingUsingRectangle) {
1463 glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
1465 glVertex2d(selectionCorner1.x(), selectionCorner1.y());
1466 glVertex2d(selectionCorner1.x(), selectionCorner2.y());
1467 glVertex2d(selectionCorner2.x(), selectionCorner2.y());
1468 glVertex2d(selectionCorner2.x(), selectionCorner1.y());
1477 if (myViewNet->makeCurrent()) {
1478 std::set<std::pair<std::string, GNEAttributeCarrier*> > ACsInBoundary = myViewNet->getAttributeCarriersInBoundary(boundary);
1480 std::set<std::pair<std::string, GNEAttributeCarrier*> > ACsInBoundaryFiltered;
1481 for (
const auto& AC : ACsInBoundary) {
1482 if (myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
1483 if (AC.second->getTagProperty().isNetworkElement() || AC.second->getTagProperty().isAdditionalElement() ||
1484 AC.second->getTagProperty().isTAZElement() || AC.second->getTagProperty().isShape()) {
1485 ACsInBoundaryFiltered.insert(AC);
1487 }
else if (myViewNet->myEditModes.isCurrentSupermodeDemand() && AC.second->getTagProperty().isDemandElement()) {
1488 ACsInBoundaryFiltered.insert(AC);
1489 }
else if (myViewNet->myEditModes.isCurrentSupermodeData() && AC.second->getTagProperty().isGenericData()) {
1490 ACsInBoundaryFiltered.insert(AC);
1494 std::vector<GNEAttributeCarrier*> ACToSelect;
1495 std::vector<GNEAttributeCarrier*> ACToUnselect;
1497 ACToSelect.reserve(ACsInBoundaryFiltered.size());
1498 ACToUnselect.reserve(ACsInBoundaryFiltered.size());
1503 const auto selectedAC = myViewNet->getNet()->getAttributeCarriers()->getSelectedAttributeCarriers(
false);
1505 for (
const auto& AC : selectedAC) {
1506 ACToUnselect.push_back(AC);
1510 for (
const auto& AC : ACsInBoundaryFiltered) {
1511 switch (myViewNet->myViewParent->getSelectorFrame()->getModificationModeModule()->getModificationMode()) {
1513 ACToUnselect.push_back(AC.second);
1516 if (std::find(ACToUnselect.begin(), ACToUnselect.end(), AC.second) != ACToUnselect.end()) {
1517 ACToSelect.push_back(AC.second);
1521 ACToSelect.push_back(AC.second);
1527 std::vector<GNEEdge*> edgesToSelect;
1529 for (
const auto& AC : ACToSelect) {
1531 edgesToSelect.push_back(
dynamic_cast<GNEEdge*
>(AC));
1535 for (
const auto& edge : edgesToSelect) {
1537 ACToSelect.push_back(edge->getFromJunction());
1538 for (
const auto& connection : edge->getFromJunction()->getGNEConnections()) {
1539 ACToSelect.push_back(connection);
1541 for (
const auto& crossing : edge->getFromJunction()->getGNECrossings()) {
1542 ACToSelect.push_back(crossing);
1545 ACToSelect.push_back(edge->getToJunction());
1546 for (
const auto& connection : edge->getToJunction()->getGNEConnections()) {
1547 ACToSelect.push_back(connection);
1549 for (
const auto& crossing : edge->getToJunction()->getGNECrossings()) {
1550 ACToSelect.push_back(crossing);
1555 if ((ACToSelect.size() + ACToUnselect.size()) > 0) {
1558 for (
const auto& AC : ACToUnselect) {
1561 for (
const auto& AC : ACToSelect) {
1562 if (AC->getTagProperty().isSelectable()) {
1566 myViewNet->myUndoList->end();
1568 myViewNet->makeNonCurrent();
1578 myTestingEnabled(
OptionsCont::getOptions().getBool(
"gui-testing")),
1580 myTestingHeight(0) {
1590 if ((windowSize.size() == 2) && GNEAttributeCarrier::canParse<int>(windowSize[0]) && GNEAttributeCarrier::canParse<int>(windowSize[1])) {
1591 myTestingWidth = GNEAttributeCarrier::parse<int>(windowSize[0]);
1592 myTestingHeight = GNEAttributeCarrier::parse<int>(windowSize[1]);
1594 WRITE_ERROR(
"Invalid windows size-format: " +
toString(windowSize) +
"for option 'window-size'");
1603 if (myTestingEnabled) {
1605 if (myTestingWidth > 0) {
1606 mainWindow->resize(myTestingWidth, myTestingHeight);
1611 const double size = myViewNet->p2m(32);
1612 Position center = myViewNet->screenPos2NetPos(8, 8);
1617 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
1620 glVertex2d(0, -size);
1621 glVertex2d(size, -size);
1622 glVertex2d(size, 0);
1629 glScaled(0.7, 0.7, 0);
1630 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
1633 glVertex2d(0, -size);
1634 glVertex2d(size, -size);
1635 glVertex2d(size, 0);
1642 glScaled(0.4, 0.4, 0);
1643 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
1646 glVertex2d(0, -size);
1647 glVertex2d(size, -size);
1648 glVertex2d(size, 0);
1653 Position posRelative = myViewNet->screenPos2NetPos(myViewNet->getWidth() - 40, myViewNet->getHeight() - 20);
1663 return myTestingEnabled;
1672 saveNetwork(nullptr),
1673 saveAdditionalElements(nullptr),
1674 saveDemandElements(nullptr),
1675 saveDataElements(nullptr),
1676 myViewNet(viewNet) {
1683 saveAll =
new FXButton(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements,
1688 saveNetwork =
new FXButton(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements,
1691 saveNetwork->create();
1693 saveAdditionalElements =
new FXButton(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements,
1696 saveAdditionalElements->create();
1698 saveDemandElements =
new FXButton(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements,
1701 saveDemandElements->create();
1703 saveDataElements =
new FXButton(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements,
1706 saveDataElements->create();
1708 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements->recalc();
1710 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements->show();
1722 networkButton(nullptr),
1723 demandButton(nullptr),
1724 dataButton(nullptr),
1733 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes,
"Network\t\tSet mode for edit network elements. (F2)",
1735 networkButton->create();
1738 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes,
"Demand\t\tSet mode for edit traffic demand. (F3)",
1740 demandButton->create();
1743 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes,
"Data\t\tSet mode for edit data demand. (F4)",
1745 dataButton->create();
1747 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
1749 myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes->show();
1755 if (!force && (supermode == currentSupermode)) {
1756 myViewNet->setStatusBarText(
"Mode already selected");
1757 if (myViewNet->myCurrentFrame !=
nullptr) {
1758 myViewNet->myCurrentFrame->focusUpperElement();
1761 myViewNet->setStatusBarText(
"");
1763 myViewNet->abortOperation(
false);
1765 currentSupermode = supermode;
1769 networkButton->setChecked(
true);
1770 demandButton->setChecked(
false);
1771 dataButton->setChecked(
false);
1773 myViewNet->myNetworkCheckableButtons.showNetworkCheckableButtons();
1775 myViewNet->myDemandCheckableButtons.hideDemandCheckableButtons();
1777 myViewNet->myDataCheckableButtons.hideDataCheckableButtons();
1779 setNetworkEditMode(networkEditMode,
true);
1782 networkButton->setChecked(
false);
1783 demandButton->setChecked(
true);
1784 dataButton->setChecked(
false);
1786 myViewNet->myNetworkCheckableButtons.hideNetworkCheckableButtons();
1788 myViewNet->myDemandCheckableButtons.showDemandCheckableButtons();
1790 myViewNet->myDataCheckableButtons.hideDataCheckableButtons();
1792 setDemandEditMode(demandEditMode,
true);
1794 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
1796 if (!myViewNet->myNet->getPathManager()->getPathCalculator()->isPathCalculatorUpdated()) {
1798 myViewNet->myNet->getPathManager()->getPathCalculator()->updatePathCalculator();
1800 myViewNet->myNet->computeDemandElements(myViewNet->myViewParent->getGNEAppWindows());
1804 networkButton->setChecked(
false);
1805 demandButton->setChecked(
false);
1806 dataButton->setChecked(
true);
1808 myViewNet->myNetworkCheckableButtons.hideNetworkCheckableButtons();
1810 myViewNet->myDemandCheckableButtons.hideDemandCheckableButtons();
1812 myViewNet->myDataCheckableButtons.showDataCheckableButtons();
1814 setDataEditMode(dataEditMode,
true);
1816 if (!myViewNet->myNet->getPathManager()->getPathCalculator()->isPathCalculatorUpdated()) {
1818 myViewNet->myNet->getPathManager()->getPathCalculator()->updatePathCalculator();
1820 myViewNet->myNet->computeDemandElements(myViewNet->myViewParent->getGNEAppWindows());
1824 networkButton->update();
1825 demandButton->update();
1826 dataButton->update();
1828 myViewNet->myViewParent->getGNEAppWindows()->updateSuperModeMenuCommands(currentSupermode);
1835 if ((mode == networkEditMode) && !force) {
1836 myViewNet->setStatusBarText(
"Network mode already selected");
1837 if (myViewNet->myCurrentFrame !=
nullptr) {
1838 myViewNet->myCurrentFrame->focusUpperElement();
1841 myViewNet->setStatusBarText(
"Save modifications in TLS before change mode");
1842 myViewNet->myCurrentFrame->focusUpperElement();
1844 myViewNet->setStatusBarText(
"");
1845 myViewNet->abortOperation(
false);
1847 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
1849 networkEditMode = mode;
1869 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
1875 myViewNet->updateCursor();
1877 myViewNet->updateNetworkModeSpecificControls();
1884 if ((mode == demandEditMode) && !force) {
1885 myViewNet->setStatusBarText(
"Demand mode already selected");
1886 if (myViewNet->myCurrentFrame !=
nullptr) {
1887 myViewNet->myCurrentFrame->focusUpperElement();
1890 myViewNet->setStatusBarText(
"");
1891 myViewNet->abortOperation(
false);
1893 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
1895 demandEditMode = mode;
1910 myViewNet->updateCursor();
1912 myViewNet->updateDemandModeSpecificControls();
1919 if ((mode == dataEditMode) && !force) {
1920 myViewNet->setStatusBarText(
"Data mode already selected");
1921 if (myViewNet->myCurrentFrame !=
nullptr) {
1922 myViewNet->myCurrentFrame->focusUpperElement();
1925 myViewNet->setStatusBarText(
"");
1926 myViewNet->abortOperation(
false);
1928 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
1930 dataEditMode = mode;
1943 for (
const auto& dataSet : myViewNet->getNet()->getAttributeCarriers()->getDataSets()) {
1944 dataSet->updateAttributeColors();
1947 myViewNet->updateCursor();
1949 myViewNet->updateDataModeSpecificControls();
1976 menuCheckToggleGrid(nullptr),
1977 menuCheckDrawSpreadVehicles(nullptr),
1978 menuCheckShowDemandElements(nullptr),
1979 menuCheckSelectEdges(nullptr),
1980 menuCheckShowConnections(nullptr),
1981 menuCheckHideConnections(nullptr),
1982 menuCheckShowAdditionalSubElements(nullptr),
1983 menuCheckExtendSelection(nullptr),
1984 menuCheckChangeAllPhases(nullptr),
1985 menuCheckWarnAboutMerge(nullptr),
1986 menuCheckShowJunctionBubble(nullptr),
1987 menuCheckMoveElevation(nullptr),
1988 menuCheckChainEdges(nullptr),
1989 menuCheckAutoOppositeEdge(nullptr),
1990 myViewNet(viewNet) {
1997 menuCheckToggleGrid =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
1998 (
"\t\tShow grid and restrict movement to the grid - define grid size in visualization options. (Ctrl+G)"),
2001 menuCheckToggleGrid->setChecked(
false);
2002 menuCheckToggleGrid->create();
2004 menuCheckDrawSpreadVehicles =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2005 (
"\t\tDraw vehicles spread in lane or in depart position."),
2008 menuCheckDrawSpreadVehicles->setChecked(
false);
2009 menuCheckDrawSpreadVehicles->create();
2011 menuCheckShowDemandElements =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2012 (
"\t\tToggle show demand elements."),
2015 menuCheckShowDemandElements->setChecked(
false);
2016 menuCheckShowDemandElements->create();
2018 menuCheckSelectEdges =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2019 (
"\t\tToggle whether clicking should select edges or lanes."),
2022 menuCheckSelectEdges->setChecked(
true);
2023 menuCheckSelectEdges->create();
2025 menuCheckShowConnections =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2026 (
"\t\tToggle show connections over junctions."),
2029 menuCheckShowConnections->setChecked(myViewNet->getVisualisationSettings().showLane2Lane);
2030 menuCheckShowConnections->create();
2032 menuCheckHideConnections =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2033 (
"\t\tHide connections."),
2036 menuCheckHideConnections->setChecked(
false);
2037 menuCheckHideConnections->create();
2039 menuCheckShowAdditionalSubElements =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2040 (
"\t\tShow additional sub-elements."),
2043 menuCheckShowAdditionalSubElements->setChecked(
false);
2044 menuCheckShowAdditionalSubElements->create();
2046 menuCheckExtendSelection =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2047 (
"\t\tToggle whether selecting multiple edges should automatically select their junctions."),
2050 menuCheckExtendSelection->setChecked(
true);
2051 menuCheckExtendSelection->create();
2053 menuCheckChangeAllPhases =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2054 (
"\t\tToggle whether clicking should apply state changes to all phases of the current TLS plan."),
2057 menuCheckChangeAllPhases->setChecked(
false);
2058 menuCheckChangeAllPhases->create();
2060 menuCheckWarnAboutMerge =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2061 (
"\t\tAsk for confirmation before merging junction."),
2064 menuCheckWarnAboutMerge->setChecked(
true);
2065 menuCheckWarnAboutMerge->create();
2067 menuCheckShowJunctionBubble =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2068 (
"\t\tShow bubbles over junctions shapes."),
2071 menuCheckShowJunctionBubble->setChecked(
false);
2072 menuCheckShowJunctionBubble->create();
2074 menuCheckMoveElevation =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2075 (
"\t\tApply mouse movement to elevation instead of x,y position."),
2078 menuCheckMoveElevation->setChecked(
false);
2079 menuCheckMoveElevation->create();
2081 menuCheckChainEdges =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2082 (
"\t\tCreate consecutive edges with a single click (hit ESC to cancel chain)."),
2085 menuCheckChainEdges->setChecked(
false);
2086 menuCheckChainEdges->create();
2088 menuCheckAutoOppositeEdge =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2089 (
"\t\tAutomatically create an edge in the opposite direction."),
2092 menuCheckAutoOppositeEdge->setChecked(
false);
2093 menuCheckAutoOppositeEdge->create();
2096 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
2102 menuCheckToggleGrid->hide();
2103 menuCheckDrawSpreadVehicles->hide();
2104 menuCheckShowDemandElements->hide();
2105 menuCheckSelectEdges->hide();
2106 menuCheckShowConnections->hide();
2107 menuCheckHideConnections->hide();
2108 menuCheckShowAdditionalSubElements->hide();
2109 menuCheckExtendSelection->hide();
2110 menuCheckChangeAllPhases->hide();
2111 menuCheckWarnAboutMerge->hide();
2112 menuCheckShowJunctionBubble->hide();
2113 menuCheckMoveElevation->hide();
2114 menuCheckChainEdges->hide();
2115 menuCheckAutoOppositeEdge->hide();
2117 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->show();
2124 if (menuCheckToggleGrid->shown()) {
2125 commands.push_back(menuCheckToggleGrid);
2127 if (menuCheckDrawSpreadVehicles->shown()) {
2128 commands.push_back(menuCheckDrawSpreadVehicles);
2130 if (menuCheckShowDemandElements->shown()) {
2131 commands.push_back(menuCheckShowDemandElements);
2133 if (menuCheckSelectEdges->shown()) {
2134 commands.push_back(menuCheckSelectEdges);
2136 if (menuCheckShowConnections->shown()) {
2137 commands.push_back(menuCheckShowConnections);
2139 if (menuCheckHideConnections->shown()) {
2140 commands.push_back(menuCheckHideConnections);
2142 if (menuCheckShowAdditionalSubElements->shown()) {
2143 commands.push_back(menuCheckShowAdditionalSubElements);
2145 if (menuCheckExtendSelection->shown()) {
2146 commands.push_back(menuCheckExtendSelection);
2148 if (menuCheckChangeAllPhases->shown()) {
2149 commands.push_back(menuCheckChangeAllPhases);
2151 if (menuCheckWarnAboutMerge->shown()) {
2152 commands.push_back(menuCheckWarnAboutMerge);
2154 if (menuCheckShowJunctionBubble->shown()) {
2155 commands.push_back(menuCheckShowJunctionBubble);
2157 if (menuCheckMoveElevation->shown()) {
2158 commands.push_back(menuCheckMoveElevation);
2160 if (menuCheckChainEdges->shown()) {
2161 commands.push_back(menuCheckChainEdges);
2163 if (menuCheckAutoOppositeEdge->shown()) {
2164 commands.push_back(menuCheckAutoOppositeEdge);
2171 return (menuCheckDrawSpreadVehicles->amChecked() == TRUE);
2177 if (menuCheckShowDemandElements->shown()) {
2178 return (menuCheckShowDemandElements->amChecked() == TRUE);
2188 if (menuCheckSelectEdges->shown()) {
2189 return (menuCheckSelectEdges->amChecked() == TRUE);
2199 if (myViewNet->myEditModes.isCurrentSupermodeData()) {
2203 return (menuCheckHideConnections->amChecked() == FALSE);
2206 }
else if (myViewNet->myEditModes.isCurrentSupermodeNetwork() && menuCheckShowConnections->shown() ==
false) {
2209 return (myViewNet->getVisualisationSettings().showLane2Lane);
2216 if (!myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
2218 }
else if (menuCheckShowAdditionalSubElements->shown() ==
false) {
2221 return menuCheckShowAdditionalSubElements->amChecked();
2228 if (menuCheckMoveElevation->shown()) {
2229 return (menuCheckMoveElevation->amChecked() == TRUE);
2240 menuCheckToggleGrid(nullptr),
2241 menuCheckDrawSpreadVehicles(nullptr),
2242 menuCheckHideShapes(nullptr),
2243 menuCheckShowAllTrips(nullptr),
2244 menuCheckShowAllPersonPlans(nullptr),
2245 menuCheckLockPerson(nullptr),
2246 menuCheckShowAllContainerPlans(nullptr),
2247 menuCheckLockContainer(nullptr),
2248 menuCheckHideNonInspectedDemandElements(nullptr),
2249 menuCheckShowOverlappedRoutes(nullptr),
2251 myLockedPerson(nullptr),
2252 myLockedContainer(nullptr) {
2259 menuCheckToggleGrid =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2260 (
"\t\tShow grid and restrict movement to the grid - define grid size in visualization options. (Ctrl+G)"),
2263 menuCheckToggleGrid->setChecked(
false);
2264 menuCheckToggleGrid->create();
2266 menuCheckDrawSpreadVehicles =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2267 (
"\t\tDraw vehicles spread in lane or in depart position."),
2270 menuCheckDrawSpreadVehicles->setChecked(
false);
2271 menuCheckDrawSpreadVehicles->create();
2273 menuCheckHideShapes =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2274 (
"\t\tToggle show shapes (Polygons and POIs)."),
2277 menuCheckHideShapes->setChecked(
false);
2278 menuCheckHideShapes->create();
2280 menuCheckShowAllTrips =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2281 (
"\t\tToggle show all trips (requires updated demand - F5)."),
2284 menuCheckShowAllTrips->setChecked(
false);
2285 menuCheckShowAllTrips->create();
2287 menuCheckShowAllPersonPlans =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2288 (
"\t\tShow all person plans."),
2291 menuCheckShowAllPersonPlans->setChecked(
false);
2292 menuCheckShowAllPersonPlans->create();
2294 menuCheckLockPerson =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2295 (
"\t\tLock selected person."),
2298 menuCheckLockPerson->setChecked(
false);
2299 menuCheckLockPerson->create();
2301 menuCheckShowAllContainerPlans =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2302 (
"\t\tShow all container plans."),
2305 menuCheckShowAllContainerPlans->setChecked(
false);
2306 menuCheckShowAllContainerPlans->create();
2308 menuCheckLockContainer =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2309 (
"\t\tLock selected container."),
2312 menuCheckLockContainer->setChecked(
false);
2313 menuCheckLockContainer->create();
2315 menuCheckHideNonInspectedDemandElements =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2316 (
"\t\tToggle show non-inspected demand elements."),
2319 menuCheckHideNonInspectedDemandElements->setChecked(
false);
2320 menuCheckHideNonInspectedDemandElements->create();
2322 menuCheckShowOverlappedRoutes =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2323 (
"\t\tToggle show number of overlapped routes."),
2326 menuCheckShowOverlappedRoutes->setChecked(
false);
2327 menuCheckShowOverlappedRoutes->create();
2330 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
2336 menuCheckToggleGrid->hide();
2337 menuCheckDrawSpreadVehicles->hide();
2338 menuCheckHideShapes->hide();
2339 menuCheckShowAllTrips->hide();
2340 menuCheckShowAllPersonPlans->hide();
2341 menuCheckLockPerson->hide();
2342 menuCheckShowAllContainerPlans->hide();
2343 menuCheckLockContainer->hide();
2344 menuCheckHideNonInspectedDemandElements->hide();
2345 menuCheckShowOverlappedRoutes->hide();
2347 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->show();
2354 if (menuCheckToggleGrid->shown()) {
2355 commands.push_back(menuCheckToggleGrid);
2357 if (menuCheckDrawSpreadVehicles->shown()) {
2358 commands.push_back(menuCheckDrawSpreadVehicles);
2360 if (menuCheckHideShapes->shown()) {
2361 commands.push_back(menuCheckHideShapes);
2363 if (menuCheckShowAllTrips->shown()) {
2364 commands.push_back(menuCheckShowAllTrips);
2366 if (menuCheckShowAllPersonPlans->shown() && menuCheckShowAllPersonPlans->isEnabled()) {
2367 commands.push_back(menuCheckShowAllPersonPlans);
2369 if (menuCheckLockPerson->shown() && menuCheckLockPerson->isEnabled()) {
2370 commands.push_back(menuCheckLockPerson);
2372 if (menuCheckShowAllContainerPlans->shown() && menuCheckShowAllContainerPlans->isEnabled()) {
2373 commands.push_back(menuCheckShowAllContainerPlans);
2375 if (menuCheckLockContainer->shown() && menuCheckLockContainer->isEnabled()) {
2376 commands.push_back(menuCheckLockContainer);
2378 if (menuCheckHideNonInspectedDemandElements->shown()) {
2379 commands.push_back(menuCheckHideNonInspectedDemandElements);
2381 if (menuCheckShowOverlappedRoutes->shown()) {
2382 commands.push_back(menuCheckShowOverlappedRoutes);
2389 return (menuCheckDrawSpreadVehicles->amChecked() == TRUE);
2395 if (menuCheckHideNonInspectedDemandElements->shown()) {
2397 if ((menuCheckHideNonInspectedDemandElements->amChecked() == FALSE) || (myViewNet->getInspectedAttributeCarriers().empty())) {
2400 }
else if (myViewNet->getInspectedAttributeCarriers().front()->getTagProperty().isDemandElement()) {
2401 if (myViewNet->isAttributeCarrierInspected(demandElement)) {
2407 if (myViewNet->isAttributeCarrierInspected(i)) {
2413 if (myViewNet->isAttributeCarrierInspected(i)) {
2433 if (menuCheckHideShapes->shown()) {
2434 return (menuCheckHideShapes->amChecked() == FALSE);
2443 return (menuCheckShowAllTrips->amChecked() == TRUE);
2449 if (menuCheckShowAllPersonPlans->isEnabled()) {
2450 return (menuCheckShowAllPersonPlans->amChecked() == TRUE);
2459 myLockedPerson = person;
2465 myLockedPerson =
nullptr;
2471 return myLockedPerson;
2477 if (menuCheckShowAllContainerPlans->isEnabled()) {
2478 return (menuCheckShowAllContainerPlans->amChecked() == TRUE);
2487 myLockedContainer = container;
2493 myLockedContainer =
nullptr;
2499 if (menuCheckShowOverlappedRoutes->isEnabled()) {
2500 return (menuCheckShowOverlappedRoutes->amChecked() == TRUE);
2509 return myLockedContainer;
2517 menuCheckShowAdditionals(nullptr),
2518 menuCheckShowShapes(nullptr),
2519 menuCheckShowDemandElements(nullptr),
2520 menuCheckToogleTAZRelDrawing(nullptr),
2521 menuCheckToogleTAZDrawFill(nullptr),
2522 menuCheckToogleTAZRelOnlyFrom(nullptr),
2523 menuCheckToogleTAZRelOnlyTo(nullptr),
2524 myViewNet(viewNet) {
2531 menuCheckShowAdditionals =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2532 (
"\t\tToggle show additionals."),
2535 menuCheckShowAdditionals->setChecked(
false);
2536 menuCheckShowAdditionals->create();
2538 menuCheckShowShapes =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2539 (
"\t\tToggle show shapes (Polygons and POIs)."),
2542 menuCheckShowShapes->setChecked(
false);
2543 menuCheckShowShapes->create();
2545 menuCheckShowDemandElements =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2546 (
"\t\tToggle show demand elements."),
2549 menuCheckShowDemandElements->setChecked(
false);
2550 menuCheckShowDemandElements->create();
2552 menuCheckToogleTAZRelDrawing =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2553 (
"\t\tToggle draw TAZREL drawing mode."),
2556 menuCheckToogleTAZRelDrawing->setChecked(
true);
2557 menuCheckToogleTAZRelDrawing->create();
2559 menuCheckToogleTAZDrawFill =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2560 (
"\t\tToggle draw TAZ fill"),
2563 menuCheckToogleTAZDrawFill->setChecked(
false);
2564 menuCheckToogleTAZDrawFill->create();
2566 menuCheckToogleTAZRelOnlyFrom =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2567 (
"\t\tToggle draw TAZRel only from"),
2570 menuCheckToogleTAZRelOnlyFrom->setChecked(
true);
2571 menuCheckToogleTAZRelOnlyFrom->create();
2573 menuCheckToogleTAZRelOnlyTo =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
2574 (
"\t\tToggle draw TAZRel only to"),
2577 menuCheckToogleTAZRelOnlyTo->setChecked(
true);
2578 menuCheckToogleTAZRelOnlyTo->create();
2581 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
2587 menuCheckShowAdditionals->hide();
2588 menuCheckShowShapes->hide();
2589 menuCheckShowDemandElements->hide();
2590 menuCheckToogleTAZRelDrawing->hide();
2591 menuCheckToogleTAZDrawFill->hide();
2592 menuCheckToogleTAZRelOnlyFrom->hide();
2593 menuCheckToogleTAZRelOnlyTo->hide();
2595 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->show();
2602 if (menuCheckShowAdditionals->shown()) {
2603 commands.push_back(menuCheckShowAdditionals);
2605 if (menuCheckShowShapes->shown()) {
2606 commands.push_back(menuCheckShowShapes);
2608 if (menuCheckShowDemandElements->shown()) {
2609 commands.push_back(menuCheckShowDemandElements);
2611 if (menuCheckToogleTAZRelDrawing->shown()) {
2612 commands.push_back(menuCheckToogleTAZRelDrawing);
2614 if (menuCheckToogleTAZDrawFill->shown()) {
2615 commands.push_back(menuCheckToogleTAZDrawFill);
2617 if (menuCheckToogleTAZRelOnlyFrom->shown()) {
2618 commands.push_back(menuCheckToogleTAZRelOnlyFrom);
2620 if (menuCheckToogleTAZRelOnlyTo->shown()) {
2621 commands.push_back(menuCheckToogleTAZRelOnlyTo);
2628 if (menuCheckShowAdditionals->shown()) {
2629 return (menuCheckShowAdditionals->amChecked() == TRUE);
2638 if (menuCheckShowShapes->shown()) {
2639 return (menuCheckShowShapes->amChecked() == TRUE);
2648 if (menuCheckShowDemandElements->shown()) {
2649 return (menuCheckShowDemandElements->amChecked() == TRUE);
2658 return (menuCheckToogleTAZRelDrawing->amChecked() == TRUE);
2664 if (menuCheckToogleTAZDrawFill->shown()) {
2665 return (menuCheckToogleTAZDrawFill->amChecked() == TRUE);
2674 if (menuCheckToogleTAZRelOnlyFrom->shown()) {
2675 return (menuCheckToogleTAZRelOnlyFrom->amChecked() == TRUE);
2684 if (menuCheckToogleTAZRelOnlyTo->shown()) {
2685 return (menuCheckToogleTAZRelOnlyTo->amChecked() == TRUE);
2697 myIntervalBarUpdate(true),
2698 myGenericDataTypesComboBox(nullptr),
2699 myDataSetsComboBox(nullptr),
2700 myLimitByIntervalCheckBox(nullptr),
2701 myBeginTextField(nullptr),
2702 myEndTextField(nullptr),
2703 myFilteredAttributesComboBox(nullptr),
2704 myNoGenericDatas(
"<no types>"),
2705 myAllGenericDatas(
"<all types>"),
2706 myNoDataSets(
"<no dataSets>"),
2707 myAllDataSets(
"<all dataSets>"),
2708 myAllAttributes(
"<all attributes>") {
2715 FXLabel* genericDataLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
2717 genericDataLabel->create();
2719 myGenericDataTypesComboBox =
new FXComboBox(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
2721 myGenericDataTypesComboBox->create();
2722 FXLabel* dataSetLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
2724 dataSetLabel->create();
2726 myDataSetsComboBox =
new FXComboBox(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
2728 myDataSetsComboBox->create();
2730 myLimitByIntervalCheckBox =
new FXCheckButton(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
2732 myLimitByIntervalCheckBox->create();
2734 myBeginTextField =
new FXTextField(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
2736 myBeginTextField->create();
2738 myEndTextField =
new FXTextField(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
2740 myEndTextField->create();
2742 FXLabel* attributeLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
2744 attributeLabel->create();
2746 myFilteredAttributesComboBox =
new FXComboBox(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
2748 myFilteredAttributesComboBox->create();
2750 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->recalc();
2757 myGenericDataTypesComboBox->enable();
2758 myDataSetsComboBox->enable();
2759 myLimitByIntervalCheckBox->enable();
2760 if (myLimitByIntervalCheckBox->getCheck() == TRUE) {
2761 myBeginTextField->enable();
2762 myEndTextField->enable();
2764 myBeginTextField->disable();
2765 myEndTextField->disable();
2767 myFilteredAttributesComboBox->enable();
2774 myGenericDataTypesComboBox->disable();
2775 myDataSetsComboBox->disable();
2776 myLimitByIntervalCheckBox->disable();
2777 myBeginTextField->disable();
2778 myEndTextField->disable();
2779 myFilteredAttributesComboBox->disable();
2785 myIntervalBarUpdate =
true;
2787 updateIntervalBar();
2793 myIntervalBarUpdate =
false;
2800 if (myBeginTextField->getText().empty()) {
2803 if (myEndTextField->getText().empty()) {
2807 updateIntervalBar();
2809 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->show();
2816 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->hide();
2822 if (myIntervalBarUpdate) {
2824 const std::string previousDataSet = myDataSetsComboBox->getNumItems() > 0 ? myDataSetsComboBox->getItem(myDataSetsComboBox->getCurrentItem()).text() :
"";
2826 myDataSetsComboBox->clearItems();
2827 myGenericDataTypesComboBox->clearItems();
2828 if (myViewNet->getNet()) {
2829 if (myViewNet->getNet()->getAttributeCarriers()->getDataSets().size() > 0) {
2830 myGenericDataTypesComboBox->appendItem(myNoGenericDatas);
2831 myDataSetsComboBox->appendItem(myNoDataSets);
2833 disableIntervalBar();
2836 int previousDataSetIndex = 0;
2838 enableIntervalBar();
2840 myGenericDataTypesComboBox->appendItem(myAllGenericDatas);
2841 myDataSetsComboBox->appendItem(myAllDataSets);
2845 for (
const auto& dataTag : genericDataTags) {
2846 myGenericDataTypesComboBox->appendItem(dataTag.getFieldString().c_str());
2848 myGenericDataTypesComboBox->setNumVisible(myGenericDataTypesComboBox->getNumItems());
2850 for (
const auto& dataSet : myViewNet->getNet()->getAttributeCarriers()->getDataSets()) {
2852 if (dataSet->getID() == previousDataSet) {
2853 previousDataSetIndex = myDataSetsComboBox->getNumItems();
2855 myDataSetsComboBox->appendItem(dataSet->getID().c_str());
2858 if (myDataSetsComboBox->getNumItems() < 10) {
2859 myDataSetsComboBox->setNumVisible(myDataSetsComboBox->getNumItems());
2861 myDataSetsComboBox->setNumVisible(10);
2864 myDataSetsComboBox->setCurrentItem(previousDataSetIndex);
2875 if (myGenericDataTypesComboBox->isEnabled() && (myGenericDataTypesComboBox->getText() == myAllGenericDatas)) {
2878 return myGenericDataTypesComboBox->getText().text();
2885 if (myDataSetsComboBox->isEnabled() && (myDataSetsComboBox->getText() == myAllDataSets)) {
2888 return myDataSetsComboBox->getText().text();
2895 if (myBeginTextField->isEnabled() && GNEAttributeCarrier::canParse<double>(myBeginTextField->getText().text())) {
2896 return myBeginTextField->getText().text();
2905 if (myEndTextField->isEnabled() && GNEAttributeCarrier::canParse<double>(myEndTextField->getText().text())) {
2906 return myEndTextField->getText().text();
2915 if (myFilteredAttributesComboBox->isEnabled() &&
2916 ((myFilteredAttributesComboBox->getText() == myAllAttributes) || (myFilteredAttributesComboBox->getTextColor() != FXRGB(0, 0, 0)))) {
2919 return myFilteredAttributesComboBox->getText().text();
2927 if (myGenericDataTypesComboBox->getText() == myAllGenericDatas) {
2928 myGenericDataTypesComboBox->setTextColor(FXRGB(0, 0, 0));
2929 }
else if (myGenericDataTypesComboBox->getText().empty()) {
2930 myGenericDataTypesComboBox->setTextColor(FXRGB(0, 0, 0));
2931 myGenericDataTypesComboBox->setText(myAllGenericDatas);
2936 myGenericDataTypesComboBox->setTextColor(FXRGB(255, 0, 0));
2938 for (
const auto& genericDataTag : genericDataTags) {
2939 if (genericDataTag.getFieldString() == myGenericDataTypesComboBox->getText().text()) {
2940 myGenericDataTypesComboBox->setTextColor(FXRGB(0, 0, 0));
2945 updateComboBoxAttributes();
2947 myViewNet->updateViewNet();
2954 if (myDataSetsComboBox->getText() == myAllDataSets) {
2955 myDataSetsComboBox->setTextColor(FXRGB(0, 0, 0));
2956 }
else if (myDataSetsComboBox->getText().empty()) {
2957 myDataSetsComboBox->setTextColor(FXRGB(0, 0, 0));
2958 myDataSetsComboBox->setText(myAllDataSets);
2959 }
else if (myViewNet->getNet()->getAttributeCarriers()->retrieveDataSet(myDataSetsComboBox->getText().text(),
false)) {
2960 myDataSetsComboBox->setTextColor(FXRGB(0, 0, 0));
2962 myDataSetsComboBox->setTextColor(FXRGB(255, 0, 0));
2965 updateComboBoxAttributes();
2967 myViewNet->updateViewNet();
2974 if (myLimitByIntervalCheckBox->isEnabled() && (myLimitByIntervalCheckBox->getCheck() == TRUE)) {
2975 myBeginTextField->enable();
2976 myEndTextField->enable();
2978 myBeginTextField->disable();
2979 myEndTextField->disable();
2982 updateComboBoxAttributes();
2984 myViewNet->updateViewNet();
2990 if (myBeginTextField->getText().empty()) {
2991 myBeginTextField->setText(
toString(myViewNet->getNet()->getDataSetIntervalMinimumBegin()).c_str());
2992 myBeginTextField->setTextColor(FXRGB(0, 0, 0));
2993 }
else if (GNEAttributeCarrier::canParse<double>(myBeginTextField->getText().text())) {
2994 myBeginTextField->setTextColor(FXRGB(0, 0, 0));
2996 myBeginTextField->setTextColor(FXRGB(255, 0, 0));
2999 updateComboBoxAttributes();
3001 myViewNet->updateViewNet();
3007 if (myEndTextField->getText().empty()) {
3008 myEndTextField->setText(
toString(myViewNet->getNet()->getDataSetIntervalMaximumEnd()).c_str());
3009 myEndTextField->setTextColor(FXRGB(0, 0, 0));
3010 }
else if (GNEAttributeCarrier::canParse<double>(myEndTextField->getText().text())) {
3011 myEndTextField->setTextColor(FXRGB(0, 0, 0));
3013 myEndTextField->setTextColor(FXRGB(255, 0, 0));
3016 updateComboBoxAttributes();
3018 myViewNet->updateViewNet();
3031 myFilteredAttributes = myViewNet->getNet()->getAttributeCarriers()->retrieveGenericDataParameters(
3032 getDataSetStr(), getGenericDataTypeStr(), getBeginStr(), getEndStr());
3034 myFilteredAttributesComboBox->clearItems();
3036 if (myDataSetsComboBox->isEnabled()) {
3038 myFilteredAttributesComboBox->appendItem(myAllAttributes);
3040 for (
const auto& attribute : myFilteredAttributes) {
3041 myFilteredAttributesComboBox->appendItem(attribute.c_str());
3044 if (myFilteredAttributesComboBox->getNumItems() < 10) {
3045 myFilteredAttributesComboBox->setNumVisible(myFilteredAttributesComboBox->getNumItems());
3047 myFilteredAttributesComboBox->setNumVisible(10);
3051 myFilteredAttributesComboBox->appendItem(myNoDataSets);
3060 inspectButton(nullptr),
3061 deleteButton(nullptr),
3062 selectButton(nullptr),
3063 myViewNet(viewNet) {
3070 inspectButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3071 "\tset inspect mode\tMode for inspect elements and change their attributes. (I)",
3073 inspectButton->create();
3075 deleteButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3076 "\tset delete mode\tMode for delete elements. (D)",
3078 deleteButton->create();
3080 selectButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3081 "\tset select mode\tMode for select elements. (S)",
3083 selectButton->create();
3085 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
3091 inspectButton->show();
3092 deleteButton->show();
3093 selectButton->show();
3099 inspectButton->hide();
3100 deleteButton->hide();
3101 selectButton->hide();
3107 inspectButton->setChecked(
false);
3108 deleteButton->setChecked(
false);
3109 selectButton->setChecked(
false);
3115 inspectButton->update();
3116 deleteButton->update();
3117 selectButton->update();
3125 moveNetworkElementsButton(nullptr),
3126 createEdgeButton(nullptr),
3127 connectionButton(nullptr),
3128 trafficLightButton(nullptr),
3129 additionalButton(nullptr),
3130 crossingButton(nullptr),
3132 shapeButton(nullptr),
3133 prohibitionButton(nullptr),
3134 myViewNet(viewNet) {
3141 moveNetworkElementsButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3142 "\tset move mode\tMode for move elements. (M)",
3144 moveNetworkElementsButton->create();
3146 createEdgeButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3147 "\tset create edge mode\tMode for creating junction and edges. (E)",
3149 createEdgeButton->create();
3151 connectionButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3152 "\tset connection mode\tMode for edit connections between lanes. (C)",
3154 connectionButton->create();
3156 prohibitionButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3157 "\tset prohibition mode\tMode for editing connection prohibitions. (W)",
3159 prohibitionButton->create();
3161 trafficLightButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3162 "\tset traffic light mode\tMode for edit traffic lights over junctions. (T)",
3164 trafficLightButton->create();
3166 additionalButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3167 "\tset additional mode\tMode for adding additional elements. (A)",
3169 additionalButton->create();
3171 crossingButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3172 "\tset crossing mode\tMode for creating crossings between edges. (R)",
3174 crossingButton->create();
3176 TAZButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3177 "\tset TAZ mode\tMode for creating Traffic Assignment Zones. (Z)",
3179 TAZButton->create();
3181 shapeButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3182 "\tset polygon mode\tMode for creating polygons and POIs. (P)",
3184 shapeButton->create();
3186 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
3192 moveNetworkElementsButton->show();
3193 createEdgeButton->show();
3194 connectionButton->show();
3195 trafficLightButton->show();
3196 additionalButton->show();
3197 crossingButton->show();
3199 shapeButton->show();
3200 prohibitionButton->show();
3206 moveNetworkElementsButton->hide();
3207 createEdgeButton->hide();
3208 connectionButton->hide();
3209 trafficLightButton->hide();
3210 additionalButton->hide();
3211 crossingButton->hide();
3213 shapeButton->hide();
3214 prohibitionButton->hide();
3220 moveNetworkElementsButton->setChecked(
false);
3221 createEdgeButton->setChecked(
false);
3222 connectionButton->setChecked(
false);
3223 trafficLightButton->setChecked(
false);
3224 additionalButton->setChecked(
false);
3225 crossingButton->setChecked(
false);
3226 TAZButton->setChecked(
false);
3227 shapeButton->setChecked(
false);
3228 prohibitionButton->setChecked(
false);
3234 moveNetworkElementsButton->update();
3235 createEdgeButton->update();
3236 connectionButton->update();
3237 trafficLightButton->update();
3238 additionalButton->update();
3239 crossingButton->update();
3240 TAZButton->update();
3241 shapeButton->update();
3242 prohibitionButton->update();
3250 moveDemandElementsButton(nullptr),
3251 routeButton(nullptr),
3252 vehicleButton(nullptr),
3253 typeButton(nullptr),
3254 stopButton(nullptr),
3255 personButton(nullptr),
3256 personPlanButton(nullptr),
3257 containerButton(nullptr),
3258 containerPlanButton(nullptr),
3259 myViewNet(viewNet) {
3266 moveDemandElementsButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3267 "\tset move mode\tMode for move elements. (M)",
3269 moveDemandElementsButton->create();
3271 routeButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3272 "\tcreate route mode\tMode for creating routes. (R)",
3274 routeButton->create();
3276 vehicleButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3277 "\tcreate vehicle mode\tMode for creating vehicles. (V)",
3279 vehicleButton->create();
3281 typeButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3282 "\tcreate type mode\tMode for creating types (vehicles, person and containers). (T)",
3284 typeButton->create();
3286 stopButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3287 "\tcreate stop mode\tMode for creating stops. (A)",
3289 stopButton->create();
3291 personButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3292 "\tcreate person mode\tMode for creating persons. (P)",
3294 personButton->create();
3296 personPlanButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3297 "\tcreate person plan mode\tMode for creating person plans. (C)",
3299 personPlanButton->create();
3301 containerButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3302 "\tcreate container mode\tMode for creating containers. (P)",
3304 containerButton->create();
3306 containerPlanButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3307 "\tcreate container plan mode\tMode for creating container plans. (C)",
3309 containerPlanButton->create();
3311 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
3317 moveDemandElementsButton->show();
3318 routeButton->show();
3319 vehicleButton->show();
3322 personButton->show();
3323 personPlanButton->show();
3324 containerButton->show();
3325 containerPlanButton->show();
3331 moveDemandElementsButton->hide();
3332 routeButton->hide();
3333 vehicleButton->hide();
3336 personButton->hide();
3337 personPlanButton->hide();
3338 containerButton->hide();
3339 containerPlanButton->hide();
3345 moveDemandElementsButton->setChecked(
false);
3346 routeButton->setChecked(
false);
3347 vehicleButton->setChecked(
false);
3348 typeButton->setChecked(
false);
3349 stopButton->setChecked(
false);
3350 personButton->setChecked(
false);
3351 personPlanButton->setChecked(
false);
3352 containerButton->setChecked(
false);
3353 containerPlanButton->setChecked(
false);
3359 moveDemandElementsButton->update();
3360 routeButton->update();
3361 vehicleButton->update();
3362 typeButton->update();
3363 stopButton->update();
3364 personButton->update();
3365 personPlanButton->update();
3366 containerButton->update();
3367 containerPlanButton->update();
3375 edgeDataButton(nullptr),
3376 edgeRelDataButton(nullptr),
3377 TAZRelDataButton(nullptr),
3378 myViewNet(viewNet) {
3385 edgeDataButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3386 "\tcreate edge data mode\tMode for creating edge datas. (E)",
3388 edgeDataButton->create();
3390 edgeRelDataButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3391 "\tcreate edge relation data mode\tMode for creating edge relation datas. (R)",
3393 edgeRelDataButton->create();
3395 TAZRelDataButton =
new MFXCheckableButton(
false, myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes,
3396 "\tcreate TAZ relation data mode\tMode for creating TAZ relation datas. (Z)",
3399 TAZRelDataButton->create();
3401 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
3407 edgeDataButton->show();
3408 edgeRelDataButton->show();
3409 TAZRelDataButton->show();
3415 edgeDataButton->hide();
3416 edgeRelDataButton->hide();
3417 TAZRelDataButton->hide();
3423 edgeDataButton->setChecked(
false);
3424 edgeRelDataButton->setChecked(
false);
3425 TAZRelDataButton->setChecked(
false);
3431 edgeDataButton->update();
3432 edgeRelDataButton->update();
3433 TAZRelDataButton->update();
3442 myEditedNetworkElement(nullptr),
3449 if (element && (myEditedNetworkElement ==
nullptr)) {
3451 myPreviousNetworkEditMode = myViewNet->myEditModes.networkEditMode;
3455 myEditedNetworkElement = element;
3459 myViewNet->updateViewNet();
3467 if (myEditedNetworkElement !=
nullptr) {
3469 myEditedNetworkElement->setShapeEdited(
false);
3471 myEditedNetworkElement =
nullptr;
3473 if (myViewNet->myEditModes.networkEditMode != myPreviousNetworkEditMode) {
3474 myViewNet->myEditModes.setNetworkEditMode(myPreviousNetworkEditMode);
3483 if (myEditedNetworkElement !=
nullptr) {
3488 stopEditCustomShape();
3495 return myEditedNetworkElement;
3504 const Position viewPosition,
const double exaggeration,
const double size,
3505 const double offsetx,
const double offsety) {
3507 if (checkDrawing(AC, type, exaggeration)) {
3513 glTranslated(offsetx, offsety, 0);
3515 glRotated(180, 0, 0, 1);
3536 if (exaggeration == 0) {
3540 if (viewNet->getEditModes().isCurrentSupermodeNetwork() &&
3558 if (s.drawForPositionSelection || s.drawForRectangleSelection) {
3562 if (!s.drawDetail(s.detailSettings.lockIcon, exaggeration)) {
3574 myViewNet(viewNet) {
3608 if (selected && (myViewNet->getViewParent()->getGNEAppWindows()->getLockMenuCommands().menuCheckLockSelectedElements->getCheck() == TRUE)) {
3626 return myLockedElements.at(objectType).lock;
3701 mySupermode(supermode) {
3717 const std::vector<RGBColor>&
3742 }
else if (value >= max) {
3746 const double procent = ((value - min) * 100) / (max - min);
3750 }
else if (procent >= 100) {
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_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
toogle 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_HOTKEY_S_MODES_SELECT
hotkey for mode selecting objects
@ MID_GNE_NETWORKVIEWOPTIONS_HIDECONNECTIONS
hide connections
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWCONNECTIONS
show connections
@ MID_GNE_SAVEALLELEMENTS
save all element
@ MID_GNE_INTERVALBAR_BEGIN
begin changed in InterbalBar
@ MID_GNE_DATAVIEWOPTIONS_TAZRELONLYTO
toogle draz TAZRel only to
@ MID_GNE_DEMANDVIEWOPTIONS_LOCKPERSON
lock person
@ MID_HOTKEY_V_MODES_VEHICLE
hotkey for mode create vehicles
@ MID_HOTKEY_E_MODES_EDGE_EDGEDATA
hotkey for mode adding edges AND edgeDatas
@ MID_GNE_INTERVALBAR_ATTRIBUTE
attribute changed in InterbalBar
@ MID_GNE_NETWORKVIEWOPTIONS_ASKFORMERGE
ask before merging junctions
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWGRID
show grid
@ MID_HOTKEY_CTRL_SHIFT_D_SAVEDEMANDELEMENTS
Save Demand Elements.
@ MID_HOTKEY_CTRL_S_STOPSIMULATION_SAVENETWORK
Stop the simulation in SUMO and save network in NETEDIT.
@ MID_GNE_NETWORKVIEWOPTIONS_CHAINEDGES
create edges in chain mode
@ MID_HOTKEY_R_MODES_CROSSING_ROUTE_EDGERELDATA
hotkey for mode editing crossing, routes and edge rel datas
@ MID_GNE_DATAVIEWOPTIONS_SHOWDEMANDELEMENTS
show demand elements
@ MID_HOTKEY_I_MODES_INSPECT
hotkey for mode inspecting object attributes
@ MID_GNE_DEMANDVIEWOPTIONS_HIDESHAPES
hide shapes
@ MID_HOTKEY_P_MODES_POLYGON_PERSON
hotkey for mode creating polygons
@ MID_GNE_DATAVIEWOPTIONS_SHOWADDITIONALS
show additionals
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWBUBBLES
show junctions as bubbles
@ MID_GNE_INTERVALBAR_END
end changed in InterbalBar
@ MID_HOTKEY_Z_MODES_TAZ_TAZREL
hotkey for mode editing TAZ and TAZRel
@ MID_HOTKEY_M_MODES_MOVE
hotkey for mode moving element
@ MID_GNE_NETWORKVIEWOPTIONS_EXTENDSELECTION
extend selection
@ 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_W_MODES_PROHIBITION
hotkey for mode editing connection prohibitions
@ MID_GNE_DATAVIEWOPTIONS_TAZDRAWFILL
toogle draz TAZ fill
@ MID_HOTKEY_A_MODES_ADDITIONAL_STOP
hotkey for mode editing additionals AND stops
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWDEMANDELEMENTS
show demand elements
@ MID_HOTKEY_H_MODE_CONTAINERDATA
hotkey for mode containerData
@ MID_GNE_DEMANDVIEWOPTIONS_HIDENONINSPECTED
hide non-inspected demand element
@ MID_HOTKEY_C_MODES_CONNECT_PERSONPLAN
hotkey for mode connecting lanes
@ MID_HOTKEY_CTRL_SHIFT_A_SAVEADDITIONALS
Save Additional Elements.
@ MID_GNE_INTERVALBAR_GENERICDATATYPE
generic data selected
@ MID_HOTKEY_G_MODE_CONTAINER
hotkey for mode container
@ MID_GNE_NETWORKVIEWOPTIONS_CHANGEALLPHASES
change all phases
@ MID_GNE_DATAVIEWOPTIONS_SHOWSHAPES
show shapes
@ MID_GNE_DATAVIEWOPTIONS_TAZRELONLYFROM
toogle draz TAZRel only from
@ MID_GNE_DEMANDVIEWOPTIONS_DRAWSPREADVEHICLES
Draw vehicles in begin position or spread in lane.
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWOVERLAPPEDROUTES
show overlapped routes
@ MID_GNE_INTERVALBAR_DATASET
data set selected
@ MID_HOTKEY_F2_SUPERMODE_NETWORK
select network supermode in NETEDIT
@ MID_GNE_DEMANDVIEWOPTIONS_LOCKCONTAINER
lock container
@ MID_HOTKEY_D_MODES_DELETE
hotkey for mode deleting things
@ MID_HOTKEY_T_MODES_TLS_TYPE
hotkey for mode editing TLS AND types
@ 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
#define GUIDesignMFXCheckableButton
#define GUIDesignComboBoxWidth180
comboBox with thick frame, width 180 (Used in GNEVType)
#define GUIDesignComboBoxNCol
number of column of every combo box
#define GUIDesignLabelAttribute
label extended over the matrix column with thick frame
#define GUIDesignButtonToolbar
little button with icon placed in navigation toolbar
#define GUIDesignTextFieldNCol
Num of column of text field.
#define GUIDesignTextFielWidth50Real
text field with thick frame and width 50 and limited to doubles
#define GUIDesignMFXCheckableButtonSupermode
checkable button with icon placed in navigation toolbar for supermodes
#define GUIDesignCheckButtonAttribute
checkButton without thick extended over the frame used for attributes
#define GUIDesignComboBoxWidth120
comboBox with thick frame, width 120
@ GLO_EDGERELDATA
edge relation data
@ GLO_TAZRELDATA
TAZ relation data.
@ GLO_STOP_CONTAINER
a container stop
@ GLO_TESTELEMENT
test element (used in NETEDIT)
@ GLO_TRANSHIP
a container tranship
@ GLO_ROUTEFLOW
a routeFlow
@ GLO_TAZ
Traffic Assignment Zones (TAZs)
@ GLO_CONTAINER
a container
@ GLO_CONNECTION
a connection
@ GLO_ADDITIONALELEMENT
reserved GLO type to pack 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_LOCKICON
Lock icon (used in NETEDIT)
@ DATAMODE_CHECKBOX_SHOWADDITIONALS
@ NETWORKMODE_CHECKBOX_BUBBLES
@ DATAMODE_CHECKBOX_TAZRELONLYFROM
@ DEMANDMODE_CHECKBOX_HIDENONINSPECTEDDEMANDELEMENTS
@ NETWORKMODE_CHECKBOX_HIDECONNECTIONS
@ DEMANDMODE_CHECKBOX_SHOWTRIPS
@ 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_CHAIN
@ DEMANDMODE_CHECKBOX_SHOWOVERLAPPEDROUTES
@ NETWORKMODE_CHECKBOX_ASKFORMERGE
@ COMMONMODE_CHECKBOX_TOGGLEGRID
@ DEMANDMODE_CHECKBOX_SHOWCONTAINERPLANS
@ NETWORKMODE_CHECKBOX_TWOWAY
@ SUMO_TAG_LANE
begin/end of the description of a single lane
@ 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
#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 drawTextBox(const std::string &text, const Position &pos, const double layer, const double size, const RGBColor &txtColor=RGBColor::BLACK, const RGBColor &bgColor=RGBColor::WHITE, const RGBColor &borderColor=RGBColor::BLACK, const double angle=0, const double relBorder=0.05, const double relMargin=0.5, const int align=0)
draw Text box with given parameters
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 belongs to GNENet but has influency in the simulation.
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
static const std::vector< GNETagProperties > getTagPropertiesByType(const int tagPropertyCategory)
get tagProperties associated to the given GNETagProperties::TagType (NETWORKELEMENT,...
virtual const std::string & getID() const =0
return ID of object
virtual GUIGlObject * getGUIGlObject()=0
get GUIGlObject associated with this AttributeCarrier
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
This object is responsible for drawing a shape and for supplying a a popup menu. Messages are routete...
An Element which don't belongs to GNENet but has influency in the simulation.
An Element which don't belongs to GNENet but has influency 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 belongs to GNENet but has influency in the simulation.
An Element which don't belongs to GNENet but has influency 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)
GNETAZElement * retrieveTAZElement(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named TAZElement.
GNEShape * retrieveShape(SumoXMLTag, const std::string &id, bool hardFail=true) const
Returns the named shape.
GNEAdditional * retrieveAdditional(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named additional.
GNEDemandElement * retrieveDemandElement(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named demand element.
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
GNEViewNet * getViewNet() const
get view net
void setShapeEdited(const bool value)
set shape edited
An Element which don't belongs to GNENet but has influency in the simulation.
bool isShape() 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
std::string getAttributeStr() const
set attribute
void enableIntervalBarUpdate()
enable interval bar update
void setDataSet()
set dataSet
std::string getDataSetStr() const
get dataSet
std::string getBeginStr() const
get begin
void hideIntervalBar()
hide all options menu checks
void setGenericDataType()
set generic data type
void showIntervalBar()
show interval option bar
void disableIntervalBar()
disable interval bar
void updateIntervalBar()
update interval bar
void updateComboBoxAttributes()
update combo box attributes
void disableIntervalBarUpdate()
enable interval bar update
void buildIntervalBarElements()
build interval bar elements
std::string getGenericDataTypeStr() const
get generic data type
IntervalBar(GNEViewNet *viewNet)
default constructor
std::string getEndStr() const
get end
void enableIntervalBar()
enable interval bar
void setInterval()
update limit by interval
void setAttribute()
set attribute
~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
ObjectsContainer()
constructor
std::vector< GNEEdgeRelData * > edgeRelDatas
vector with the clicked edge relation datas
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< GNETAZElement * > TAZElements
vector with the clicked TAZ elements
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
std::vector< GNEShape * > shapes
vector with the clicked shape elements (Poly and POIs)
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
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
GNETAZElement * getTAZElementFront() const
get front TAZElement or a pointer to nullptr
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
GNEDemandElement * getDemandElementFront() const
get front demand element or a pointer to nullptr
const std::vector< GNELane * > & getLanes() const
get lanes
void updateAttributeCarriers(ObjectsContainer &container, GNEAttributeCarrier *AC)
update attribute carrier elements
GNEShape * getShapeFront() const
get front shape element or a pointer to nullptr
GNEEdge * getEdgeFront() const
get front edge or a pointer to nullptr
ObjectsUnderCursor()
default constructor
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
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
GUIVisualizationSettings & getVisualisationSettings() const
get visualization settings
static GUIGlID getTexture(GUITexture which)
returns a texture previously defined in the enum GUITexture
static void drawTexturedBox(int which, double size)
Draws a named texture as a box with the given size.
const PositionVector & getGeometry() const
Returns the geometry of the edge.
A storage for options typed value containers)
const StringVector & getStringVector(const std::string &name) const
Returns the list of string-value of the named option (only for Option_StringVector)
static OptionsCont & getOptions()
Retrieves the options.
C++ TraCI client API implementation.
A point in 2D or 3D with translation and scaling methods.
double x() const
Returns the x-position.
double y() const
Returns the y-position.
double nearest_offset_to_point2D(const Position &p, bool perpendicular=true) const
return the nearest offest to point 2D
Boundary getBoxBoundary() const
Returns a boundary enclosing this list of lines.
static const RGBColor WHITE
static const RGBColor BLUE
static const RGBColor YELLOW
static const RGBColor BLACK
static const RGBColor MAGENTA
double getShapeLayer() const
Returns the layer of the Shape.
struct for processing menu commands
FXMenuCheckIcon * menuCheckLockTranships
menu check to lock tranships
FXMenuCheckIcon * menuCheckLockRides
menu check to lock rides
FXMenuCheckIcon * menuCheckLockConnections
menu check to lock connections
FXMenuCheckIcon * menuCheckLockEdgeTAZRels
menu check to lock edgeTAZRels
FXMenuCheckIcon * menuCheckLockEdges
menu check to lock edges
FXMenuCheckIcon * menuCheckLockJunction
FXMenuCheckIcon * menuCheckLockWalk
menu check to lock walks
FXMenuCheckIcon * menuCheckLockVehicles
menu check to lock vehicles
FXMenuCheckIcon * menuCheckLockAdditionals
menu check to lock additionals
FXMenuCheckIcon * menuCheckLockPersonTrip
menu check to lock personTrips
FXMenuCheckIcon * menuCheckLockLanes
menu check to lock lanes
FXMenuCheckIcon * menuCheckLockPersons
menu check to lock persons
FXMenuCheckIcon * menuCheckLockPolygons
menu check to lock polygons
FXMenuCheckIcon * menuCheckLockTransports
menu check to lock transports
FXMenuCheckIcon * menuCheckLockEdgeDatas
FXMenuCheckIcon * menuCheckLockRoutes
FXMenuCheckIcon * menuCheckLockContainers
menu check to lock containers
FXMenuCheckIcon * menuCheckLockEdgeRelDatas
menu check to lock edgeRelDatas
FXMenuCheckIcon * menuCheckLockStops
menu check to lock stops
FXMenuCheckIcon * menuCheckLockPOIs
menu check to lock POIs
FXMenuCheckIcon * menuCheckLockCrossings
menu check to lock crossings
FXMenuCheckIcon * menuCheckLockTAZs
menu check to lock TAZs
DataViewOptions(GNEViewNet *viewNet)
default constructor
bool TAZRelOnlyTo() const
check if toogle 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 toogle TAZRel only from checkbox is enabled
bool TAZDrawFill() const
check if toogle 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 toogle TAZRel drawing checkbox is enabled
void lockPerson(const GNEDemandElement *person)
lock person
bool showAllPersonPlans() const
check all person plans has to be show
void lockContainer(const GNEDemandElement *container)
lock container
void buildDemandViewOptionsMenuChecks()
build menu checks
const GNEDemandElement * getLockedPerson() const
get locked person
const GNEDemandElement * getLockedContainer() const
get locked container
bool showShapes() const
check if shapes has to be drawn
void hideDemandViewOptionsMenuChecks()
hide all options menu checks
bool showAllContainerPlans() const
check all container plans has to be show
void unlockContainer()
unlock container
void unlockPerson()
unlock person
bool drawSpreadVehicles() const
check if vehicles must be drawn spread
bool showNonInspectedDemandElements(const GNEDemandElement *demandElement) const
check if non inspected element has to be hidden
DemandViewOptions(GNEViewNet *viewNet)
default constructor
bool showOverlappedRoutes() const
show overlapped routes
void getVisibleDemandMenuCommands(std::vector< MFXCheckableButton * > &commands) const
get visible demand menu commands
bool showAllTrips() const
check if trips has to be drawn
void buildSuperModeButtons()
build checkable buttons
bool isCurrentSupermodeDemand() const
@check if current supermode is Demand
void setDemandEditMode(DemandEditMode demandMode, const bool force=false)
set Demand edit mode
EditModes(GNEViewNet *viewNet, const bool newNet)
default constructor
bool isCurrentSupermodeData() const
@check if current supermode is Data
bool isCurrentSupermodeNetwork() const
@check if current supermode is Network
void setSupermode(Supermode supermode, const bool force)
set supermode
void setNetworkEditMode(NetworkEditMode networkMode, const bool force=false)
set Network edit mode
void setDataEditMode(DataEditMode dataMode, const bool force=false)
set Data edit mode
GNENetworkElement * getEditedNetworkElement() const
pointer to edited network element
void stopEditCustomShape()
edit edit shape
EditNetworkElementShapes(GNEViewNet *viewNet)
default constructor
void commitEditedShape()
save edited shape
void startEditCustomShape(GNENetworkElement *element)
start edit custom shape
static void drawLockIcon(const GNEAttributeCarrier *AC, GUIGlObjectType type, const Position viewPosition, const double exaggeration, const double size=0.5, const double offsetx=0, const double offsety=0)
draw lock icon
static bool checkDrawing(const GNEAttributeCarrier *AC, GUIGlObjectType type, const double exaggeration)
check if icon can be drawn
void calculateJunctionSelection()
calculate junction selection
MoveMultipleElementValues(GNEViewNet *viewNet)
constructor
const GNEMoveOffset calculateMoveOffset() const
calculate move offset
void moveSelection(const bool mouseLeftButtonPressed)
move selection
void beginMoveSelection()
begin move selection
bool isMovingSelection() const
check if currently there is element being moved
bool isMovingSelectedEdge() const
flag for moving edge
void finishMoveSelection()
finish moving selection
void calculateEdgeSelection(const GNEEdge *clickedEdge)
calculate edge selection
double getEdgeOffset() const
edge offset
void resetMovingSelectedEdge()
reset flag for moving edge
void finishMoveSingleElement()
finish moving single elements in Network AND Demand mode
void moveSingleElement(const bool mouseLeftButtonPressed)
move single element in Network AND Demand mode
MoveSingleElementValues(GNEViewNet *viewNet)
constructor
bool beginMoveSingleElementNetworkMode()
begin move single element in Network mode
bool beginMoveNetworkElementShape()
begin move network elementshape
bool beginMoveSingleElementDemandMode()
begin move single element in Demand mode
const GNEMoveOffset calculateMoveOffset() const
calculate offset
bool showConnections() const
check if select show connections checkbox is enabled
bool drawSpreadVehicles() const
check if vehicles must be drawn spread
bool editingElevation() const
check if we're editing elevation
void getVisibleNetworkMenuCommands(std::vector< MFXCheckableButton * > &commands) const
get visible network menu commands
bool showDemandElements() const
check if show demand elements checkbox is enabled
bool showSubAdditionals() const
check if show sub-additionals
bool selectEdges() const
check if select edges checkbox is enabled
NetworkViewOptions(GNEViewNet *viewNet)
default constructor
void hideNetworkViewOptionsMenuChecks()
hide all options menu checks
void buildNetworkViewOptionsMenuChecks()
build menu checks
SaveElements(GNEViewNet *viewNet)
default constructor
void buildSaveElementsButtons()
build save buttons
void finishRectangleSelection()
finish rectangle selection
void drawRectangleSelection(const RGBColor &color) const
draw rectangle selection
void beginRectangleSelection()
begin rectangle selection
void moveRectangleSelection()
move rectangle selection
void processBoundarySelection(const Boundary &boundary)
Process boundary Selection.
void processShapeSelection(const PositionVector &shape)
process shape selection
void processRectangleSelection()
process rectangle Selection
std::vector< GNEEdge * > processEdgeRectangleSelection()
process rectangle Selection (only limited to Edges)
SelectingArea(GNEViewNet *viewNet)
default constructor
bool isTestingEnabled() const
check if testing mode is enabled
void drawTestingElements(GUIMainWindow *mainWindow)
draw testing element
TestingMode(GNEViewNet *viewNet)
default constructor
void initTestingMode()
init testing mode
void buildVehicleOptionsMenuChecks()
build menu checks
VehicleOptions(GNEViewNet *viewNet)
constructor
void hideVehicleOptionsMenuChecks()
hide all options menu checks
VehicleTypeOptions(GNEViewNet *viewNet)
constructor
void buildVehicleTypeOptionsMenuChecks()
build menu checks
void hideVehicleTypeOptionsMenuChecks()
hide all options menu checks
static std::vector< RGBColor > myRainbowScaledColors
scale (rainbow) colors
static const RGBColor & getRainbowScaledColor(const double min, const double max, const double value)
get rainbow scaled color
static const std::vector< RGBColor > & getRainbowScaledColors()
get scaled rainbow colors