270#pragma warning(disable: 4355)
274 FXGLVisual* glVis, FXGLCanvas* share) :
300 reparent(actualParent);
304 myNet->setViewNet(
this);
333 const Boundary maxBoundary(1000000000.0, 1000000000.0, -1000000000.0, -1000000000.0);
339 std::set<GNEAttributeCarrier*> ACs;
341 for (
const auto& GLId : GLIDs) {
349 for (
const auto& AC : ACs) {
351 myNet->getGrid().removeAdditionalGLObject(AC->getGUIGlObject());
385 std::string(
"\t") +
TL(
"Locate Junctions") + std::string(
"\t") +
TL(
"Locate a junction within the network. (Shift+J)"),
389 std::string(
"\t") +
TL(
"Locate Edges") + std::string(
"\t") +
TL(
"Locate an edge within the network. (Shift+E)"),
393 std::string(
"\t") +
TL(
"Locate WalkingAreas") + std::string(
"\t") +
TL(
"Locate a walkingArea within the network. (Shift+W)"),
397 std::string(
"\t") +
TL(
"Locate Vehicles") + std::string(
"\t") +
TL(
"Locate a vehicle within the network. (Shift+V)"),
401 std::string(
"\t") +
TL(
"Locate Persons") + std::string(
"\t") +
TL(
"Locate a person within the network. (Shift+P)"),
405 std::string(
"\t") +
TL(
"Locate Containers") + std::string(
"\t") +
TL(
"Locate a container within the network. (Shift+C)"),
409 std::string(
"\t") +
TL(
"Locate Route") + std::string(
"\t") +
TL(
"Locate a route within the network. (Shift+R)"),
413 std::string(
"\t") +
TL(
"Locate Stops") + std::string(
"\t") +
TL(
"Locate a stop within the network. (Shift+S)"),
424 std::string(
"\t") +
TL(
"Locate TLS") + std::string(
"\t") +
TL(
"Locate a tls within the network. (Shift+T)"),
428 std::string(
"\t") +
TL(
"Locate Additional") + std::string(
"\t") +
TL(
"Locate an additional structure within the network. (Shift+A)"),
432 std::string(
"\t") +
TL(
"Locate PoI") + std::string(
"\t") +
TL(
"Locate a PoI within the network. (Shift+O)"),
436 std::string(
"\t") +
TL(
"Locate Polygon") + std::string(
"\t") +
TL(
"Locate a Polygon within the network. (Shift+L)"),
445 GUISUMOAbstractView::update();
515 positionBoundary.
add(pos);
516 positionBoundary.
grow(POSITION_EPS);
548 if (shape.size() == 1) {
551 }
else if (shape.size() > 1) {
562 for (
const auto& triangle : triangles) {
651 std::vector<GUIGlObject*> filteredGLObjects;
655 if (
myViewParent->getInspectorFrame()->getOverlappedInspection()->overlappedInspectionShown() &&
658 filteredGLObjects.push_back(overlappedElement);
660 bool connections =
false;
669 if (glObject->getType() ==
GLO_EDGE) {
678 filteredGLObjects.push_back(glObject);
680 auto it = filteredGLObjects.begin();
683 while (it != filteredGLObjects.end()) {
685 it = filteredGLObjects.erase(it);
692 while (it != filteredGLObjects.end()) {
694 it = filteredGLObjects.erase(it);
702 auto itDuplicated = filteredGLObjects.begin();
703 std::unordered_set<GUIGlObject*> unorderedSet;
704 for (
auto itElement = filteredGLObjects.begin(); itElement != filteredGLObjects.end(); itElement++) {
705 if (unorderedSet.insert(*itElement).second) {
706 *itDuplicated++ = *itElement;
709 filteredGLObjects.erase(itDuplicated, filteredGLObjects.end());
751 if (neteditOptions.getString(
"gui-testing.setting-output").size() > 0) {
769 WRITE_ERROR(
TL(
"GUI-Settings cannot be saved in ") + neteditOptions.getString(
"gui-testing.setting-output"));
821 double minValue = std::numeric_limits<double>::infinity();
822 double maxValue = -std::numeric_limits<double>::infinity();
824 bool hasMissingData =
false;
829 }
else if (active == 11) {
832 for (
const auto& lane :
myNet->getAttributeCarriers()->getLanes()) {
833 const double val = lane.second->getColorValue(s, active);
835 hasMissingData =
true;
838 minValue =
MIN2(minValue, val);
839 maxValue =
MAX2(maxValue, val);
842 for (
const auto& tagMap :
myNet->getAttributeCarriers()->getDemandElements()) {
843 for (
const auto& objItem : tagMap.second) {
844 const double val = objItem.first->getColorValue(s, active);
846 hasMissingData =
true;
849 minValue =
MIN2(minValue, val);
850 maxValue =
MAX2(maxValue, val);
855 for (
const auto& junction :
myNet->getAttributeCarriers()->getJunctions()) {
856 minValue =
MIN2(minValue, junction.second->getPositionInView().z());
857 maxValue =
MAX2(maxValue, junction.second->getPositionInView().z());
862 for (
const auto& genericData :
myNet->getAttributeCarriers()->getGenericDatas().at(
SUMO_TAG_TAZREL)) {
863 const double value = genericData.second->getColorValue(s, active);
875 std::set<SVCPermissions> codes;
876 for (
const auto& lane :
myNet->getAttributeCarriers()->getLanes()) {
877 codes.insert(lane.second->getParentEdge()->getNBEdge()->getPermissions(lane.second->getIndex()));
879 int step =
MAX2(1, 360 / (
int)codes.size());
883 hue = (hue + step) % 360;
893 myApp->setStatusBarText(text);
935 const std::string header =
TL(
"Confirm Junction Merger");
936 const std::string body =
TLF(
"Do you wish to merge junctions '%' and '%'?\n('%' will be eliminated and its roads added to '%')",
960 body =
TLF(
"% requires switch to network mode. Continue?", operation);
962 body =
TLF(
"% requires switch to demand mode. Continue?", operation);
964 body =
TLF(
"% requires switch to data mode. Continue?", operation);
970 TL(
"Confirm switch mode"), body);
985 const bool selectingDetectors =
myViewParent->getTLSEditorFrame()->getTLSAttributes()->isSetDetectorsToggleButtonEnabled();
986 return (TLSMode && selectingDetectors);
994 const bool selectingJunctions =
myViewParent->getTLSEditorFrame()->getTLSJunction()->isJoiningJunctions();
995 return (TLSMode && selectingJunctions);
1014 const auto selectedLanes =
myNet->getAttributeCarriers()->getSelectedLanes();
1016 std::map<GNEEdge*, GNELane*> mapOfEdgesAndLanes;
1018 for (
const auto& selectedLane : selectedLanes) {
1019 mapOfEdgesAndLanes[
myNet->getAttributeCarriers()->retrieveEdge(selectedLane->getParentEdge()->getID())] = selectedLane;
1022 if (mapOfEdgesAndLanes.size() != selectedLanes.size()) {
1023 const std::string header =
TL(
"Multiple lane in the same edge selected");
1024 const std::string bodyA =
TL(
"There are selected lanes that belong to the same edge.");
1025 const std::string bodyB =
TLF(
"Only one lane per edge will be restricted to %.",
toString(vclass));
1030 if (mapOfEdgesAndLanes.size() > 0) {
1034 for (
const auto& edgeLane : mapOfEdgesAndLanes) {
1035 if (edgeLane.first->hasRestrictedLane(vclass)) {
1040 if (counter == (
int)mapOfEdgesAndLanes.size()) {
1041 const std::string header =
TLF(
"Set vclass to % for selected lanes",
toString(vclass));
1042 const std::string body =
TLF(
"All lanes own already another lane in the same edge with a restriction for %",
toString(vclass));
1048 const std::string header =
TLF(
"Set vclass to % for selected lanes",
toString(vclass));
1049 const std::string body =
TLF(
"% lanes will be restricted to %. Continue?",
toString(mapOfEdgesAndLanes.size() - counter),
toString(vclass));
1060 for (
const auto& edgeLane : mapOfEdgesAndLanes) {
1081 const auto selectedEdges =
myNet->getAttributeCarriers()->getSelectedEdges();
1083 const auto selectedLanes =
myNet->getAttributeCarriers()->getSelectedLanes();
1085 std::set<GNEEdge*> setOfEdges;
1087 for (
const auto& edge : selectedEdges) {
1088 setOfEdges.insert(edge);
1091 for (
const auto& selectedLane : selectedLanes) {
1093 setOfEdges.insert(
myNet->getAttributeCarriers()->retrieveEdge(selectedLane->getParentEdge()->getID()));
1100 for (
const auto& edge : setOfEdges) {
1102 if (edge->hasRestrictedLane(vclass)) {
1107 if (counter == (
int)setOfEdges.size()) {
1108 const std::string header =
TLF(
"Add vclass % to selected lanes",
toString(vclass));
1109 const std::string body =
TLF(
"All lanes own already another lane in the same edge with a restriction to %.",
toString(vclass));
1115 const std::string header =
TLF(
"Add vclass % to selected lanes",
toString(vclass));
1116 const std::string body =
TLF(
"% restrictions to % will be added. Continue?",
toString(setOfEdges.size() - counter),
toString(vclass));
1127 for (
const auto& edge : setOfEdges) {
1141 if (insertAtFront) {
1162 const auto selectedEdges =
myNet->getAttributeCarriers()->getSelectedEdges();
1164 const auto selectedLanes =
myNet->getAttributeCarriers()->getSelectedLanes();
1166 std::set<GNEEdge*> setOfEdges;
1168 for (
const auto& edge : selectedEdges) {
1169 setOfEdges.insert(edge);
1172 for (
const auto& selectedLane : selectedLanes) {
1174 setOfEdges.insert(
myNet->getAttributeCarriers()->retrieveEdge(selectedLane->getParentEdge()->getID()));
1177 if (setOfEdges.size() > 0) {
1181 for (
const auto& edge : setOfEdges) {
1183 if (edge->hasRestrictedLane(vclass)) {
1189 const std::string header =
TLF(
"Remove vclass % from selected lanes",
toString(vclass));
1190 const std::string body =
TLF(
"The selected lanes and edges don't have a restriction to %.",
toString(vclass));
1196 const std::string header =
TLF(
"Remove vclass % from selected lanes",
toString(vclass));
1197 const std::string body =
TLF(
"% restrictions to % will be removed. Continue?",
toString(setOfEdges.size() - counter),
toString(vclass));
1208 for (
const auto& edge : setOfEdges) {
1227#pragma warning(push)
1228#pragma warning(disable: 4355)
1257std::vector<std::string>
1259 std::set<std::string> keys;
1260 for (
const NBEdge* e :
myNet->getEdgeCont().getAllEdges()) {
1262 for (
const auto& item : e->getParametersMap()) {
1263 keys.insert(item.first);
1265 for (
const auto& con : e->getConnections()) {
1266 for (
const auto& item : con.getParametersMap()) {
1267 keys.insert(item.first);
1271 for (
const auto& lane : e->getLanes()) {
1273 for (
const auto& item : lane.getParametersMap()) {
1274 keys.insert(item.first);
1276 for (
const auto& con : e->getConnectionsFromLane(i)) {
1277 for (
const auto& item : con.getParametersMap()) {
1278 keys.insert(item.first);
1285 return std::vector<std::string>(keys.begin(), keys.end());
1289std::vector<std::string>
1291 std::set<std::string> keys;
1293 for (
const auto& parameter : genericData.second->getParameters()->getParametersMap()) {
1294 keys.insert(parameter.first);
1297 return std::vector<std::string>(keys.begin(), keys.end());
1301std::vector<std::string>
1303 std::set<std::string> keys;
1304 for (
const auto& genericData :
myNet->getAttributeCarriers()->getGenericDatas().at(
SUMO_TAG_TAZREL)) {
1305 for (
const auto& parameter : genericData.second->getParameters()->getParametersMap()) {
1306 keys.insert(parameter.first);
1309 for (
const auto& genericData :
myNet->getAttributeCarriers()->getGenericDatas().at(
SUMO_TAG_EDGEREL)) {
1310 for (
const auto& parameter : genericData.second->getParameters()->getParametersMap()) {
1311 keys.insert(parameter.first);
1314 return std::vector<std::string>(keys.begin(), keys.end());
1318std::vector<std::string>
1320 return myNet->getAttributeCarriers()->getPOIParamKeys();
1352 glMatrixMode(GL_MODELVIEW);
1354 glDisable(GL_TEXTURE_2D);
1355 glDisable(GL_ALPHA_TEST);
1357 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
1358 glEnable(GL_DEPTH_TEST);
1374 myViewParent->getAdditionalFrame()->getConsecutiveLaneSelector()->drawTemporalConsecutiveLanePath();
1376 myViewParent->getWireFrame()->getConsecutiveLaneSelector()->drawTemporalConsecutiveLanePath();
1399 myNet->getNetworkPathManager()->getPathDraw()->clearPathDraw();
1400 myNet->getDemandPathManager()->getPathDraw()->clearPathDraw();
1401 myNet->getDataPathManager()->getPathDraw()->clearPathDraw();
1443 if (
myViewParent->getGNEAppWindows()->allowInputSignals(obj)) {
1451 }
else if (
myEditModes.isCurrentSupermodeDemand()) {
1453 }
else if (
myEditModes.isCurrentSupermodeData()) {
1470 if (
myViewParent->getGNEAppWindows()->allowInputSignals(obj)) {
1483 }
else if (
myEditModes.isCurrentSupermodeDemand()) {
1485 }
else if (
myEditModes.isCurrentSupermodeData()) {
1502 if (
myViewParent->getGNEAppWindows()->allowInputSignals(obj)) {
1519 if (
myViewParent->getGNEAppWindows()->allowInputSignals(obj)) {
1536 if (
myViewParent->getGNEAppWindows()->allowInputSignals(obj)) {
1556 if (
myViewParent->getGNEAppWindows()->allowInputSignals(obj)) {
1576 if (
myViewParent->getGNEAppWindows()->allowInputSignals(obj)) {
1586 }
else if (
myEditModes.isCurrentSupermodeDemand()) {
1588 }
else if (
myEditModes.isCurrentSupermodeData()) {
1603 if (
myViewParent->getGNEAppWindows()->allowInputSignals(obj)) {
1631 if (
myViewParent->getGNEAppWindows()->allowInputSignals(obj)) {
1670 myViewParent->getCreateEdgeFrame()->abortEdgeCreation();
1674 if (clearSelection) {
1675 myViewParent->getSelectorFrame()->clearCurrentSelection();
1679 myViewParent->getConnectorFrame()->getConnectionModifications()->onCmdCancelModifications(0, 0, 0);
1682 if (
myViewParent->getTLSEditorFrame()->getTLSAttributes()->isSetDetectorsToggleButtonEnabled()) {
1683 myViewParent->getTLSEditorFrame()->getTLSAttributes()->disableE1DetectorMode();
1684 }
else if (
myViewParent->getTLSEditorFrame()->getTLSJunction()->isJoiningJunctions()) {
1685 myViewParent->getTLSEditorFrame()->getTLSJunction()->onCmdCancelJoin(
nullptr, 0,
nullptr);
1687 myViewParent->getTLSEditorFrame()->getTLSPrograms()->discardChanges(
false);
1695 myViewParent->getShapeFrame()->getDrawingShapeModule()->abortDrawing();
1697 if (
myViewParent->getTAZFrame()->getDrawingShapeModule()->isDrawing()) {
1699 myViewParent->getTAZFrame()->getDrawingShapeModule()->abortDrawing();
1700 }
else if (
myViewParent->getTAZFrame()->getCurrentTAZModule()->getTAZ() !=
nullptr) {
1702 myViewParent->getTAZFrame()->getCurrentTAZModule()->setTAZ(
nullptr);
1705 myViewParent->getProhibitionFrame()->getSelectionModul()->onCmdCancel(
nullptr, 0,
nullptr);
1708 myViewParent->getAdditionalFrame()->getViewObjetsSelector()->clearSelection();
1710 myViewParent->getAdditionalFrame()->getConsecutiveLaneSelector()->abortPathCreation();
1713 myViewParent->getWireFrame()->getConsecutiveLaneSelector()->abortPathCreation();
1715 }
else if (
myEditModes.isCurrentSupermodeDemand()) {
1720 if (clearSelection) {
1721 myViewParent->getSelectorFrame()->clearCurrentSelection();
1724 myViewParent->getRouteFrame()->getPathCreator()->abortPathCreation();
1726 myViewParent->getVehicleFrame()->getPathCreator()->abortPathCreation();
1728 myViewParent->getPersonFrame()->getPlanCreator()->abortPathCreation();
1730 myViewParent->getPersonPlanFrame()->getPlanCreator()->abortPathCreation();
1732 myViewParent->getContainerFrame()->getPlanCreator()->abortPathCreation();
1734 myViewParent->getContainerPlanFrame()->getPlanCreator()->abortPathCreation();
1736 }
else if (
myEditModes.isCurrentSupermodeData()) {
1741 if (clearSelection) {
1742 myViewParent->getSelectorFrame()->clearCurrentSelection();
1745 myViewParent->getEdgeRelDataFrame()->getPathCreator()->abortPathCreation();
1747 myViewParent->getTAZRelDataFrame()->clearTAZSelection();
1772 const auto selectedNetworkACs =
myNet->getAttributeCarriers()->getSelectedAttributeCarriers(
false);
1774 if (selectedNetworkACs.size() > 0) {
1776 for (
const auto selectedAC : selectedNetworkACs) {
1782 }
else if (
myEditModes.isCurrentSupermodeDemand()) {
1792 const auto selectedDemandACs =
myNet->getAttributeCarriers()->getSelectedAttributeCarriers(
false);
1794 if (selectedDemandACs.size() > 0) {
1796 for (
const auto selectedAC : selectedDemandACs) {
1802 }
else if (
myEditModes.isCurrentSupermodeData()) {
1812 const auto selectedDataACs =
myNet->getAttributeCarriers()->getSelectedAttributeCarriers(
false);
1814 if (selectedDataACs.size() > 0) {
1816 for (
const auto selectedAC : selectedDataACs) {
1833 myViewParent->getConnectorFrame()->getConnectionModifications()->onCmdSaveModifications(0, 0, 0);
1836 if (
myViewParent->getTLSEditorFrame()->getTLSAttributes()->isSetDetectorsToggleButtonEnabled()) {
1837 myViewParent->getTLSEditorFrame()->getTLSAttributes()->disableE1DetectorMode();
1838 }
else if (
myViewParent->getTLSEditorFrame()->getTLSJunction()->isJoiningJunctions()) {
1839 myViewParent->getTLSEditorFrame()->getTLSJunction()->onCmdAcceptJoin(
nullptr, 0,
nullptr);
1840 }
else if (
myViewParent->getTLSEditorFrame()->getTLSPrograms()->checkHaveModifications()) {
1841 myViewParent->getTLSEditorFrame()->getTLSPrograms()->onCmdSaveChanges(
nullptr, 0,
nullptr);
1846 if (
myViewParent->getShapeFrame()->getDrawingShapeModule()->isDrawing()) {
1848 myViewParent->getShapeFrame()->getDrawingShapeModule()->stopDrawing();
1851 myViewParent->getShapeFrame()->getDrawingShapeModule()->startDrawing();
1854 myViewParent->getCrossingFrame()->createCrossingHotkey();
1856 if (
myViewParent->getTAZFrame()->getDrawingShapeModule()->isDrawing()) {
1858 myViewParent->getTAZFrame()->getDrawingShapeModule()->stopDrawing();
1859 }
else if (
myViewParent->getTAZFrame()->getCurrentTAZModule()->getTAZ() ==
nullptr) {
1861 myViewParent->getTAZFrame()->getDrawingShapeModule()->startDrawing();
1862 }
else if (
myViewParent->getTAZFrame()->getTAZSaveChangesModule()->isChangesPending()) {
1864 myViewParent->getTAZFrame()->getTAZSaveChangesModule()->onCmdSaveChanges(0, 0, 0);
1873 }
else if (
myEditModes.isCurrentSupermodeDemand()) {
1875 myViewParent->getRouteFrame()->getPathCreator()->createPath(
false);
1877 myViewParent->getVehicleFrame()->getPathCreator()->onCmdCreatePath(
nullptr, 0,
nullptr);
1879 myViewParent->getPersonFrame()->getPlanCreator()->onCmdCreatePath(
nullptr, 0,
nullptr);
1881 myViewParent->getPersonPlanFrame()->getPlanCreator()->onCmdCreatePath(
nullptr, 0,
nullptr);
1883 myViewParent->getContainerFrame()->getPlanCreator()->onCmdCreatePath(
nullptr, 0,
nullptr);
1885 myViewParent->getContainerPlanFrame()->getPlanCreator()->onCmdCreatePath(
nullptr, 0,
nullptr);
1887 }
else if (
myEditModes.isCurrentSupermodeData()) {
1889 myViewParent->getEdgeRelDataFrame()->getPathCreator()->createPath(
false);
1891 myViewParent->getTAZRelDataFrame()->buildTAZRelationData();
1902 myViewParent->getAdditionalFrame()->getConsecutiveLaneSelector()->removeLastElement();
1904 }
else if (
myEditModes.isCurrentSupermodeDemand()) {
1906 myViewParent->getRouteFrame()->getPathCreator()->removeLastElement();
1908 myViewParent->getVehicleFrame()->getPathCreator()->removeLastElement();
1910 myViewParent->getPersonFrame()->getPlanCreator()->removeLastElement();
1912 myViewParent->getPersonPlanFrame()->getPlanCreator()->removeLastElement();
1914 myViewParent->getContainerFrame()->getPlanCreator()->removeLastElement();
1916 myViewParent->getContainerPlanFrame()->getPlanCreator()->removeLastElement();
1918 }
else if (
myEditModes.isCurrentSupermodeData()) {
1920 myViewParent->getEdgeRelDataFrame()->getPathCreator()->removeLastElement();
1993 if (glObjectFront) {
1994 if (glObjectFront == GLObject) {
1996 }
else if (glObjectFront->getType() == GLObject->
getType()) {
1998 if (glObjectUnderCursor == GLObject) {
2024 for (
const auto& glObject : glObjectLayer.second) {
2025 auto junction =
myNet->getAttributeCarriers()->retrieveJunction(glObject.object->getMicrosimID(),
false);
2039 for (
const auto& glObject : glObjectLayer.second) {
2040 auto connection =
myNet->getAttributeCarriers()->retrieveConnection(glObject.object,
false);
2054 for (
const auto& glObject : glObjectLayer.second) {
2055 auto crossing =
myNet->getAttributeCarriers()->retrieveCrossing(glObject.object,
false);
2069 for (
const auto& glObject : glObjectLayer.second) {
2070 auto walkingArea =
myNet->getAttributeCarriers()->retrieveWalkingArea(glObject.object,
false);
2084 for (
const auto& glObject : glObjectLayer.second) {
2085 auto edge =
myNet->getAttributeCarriers()->retrieveEdge(glObject.object->getMicrosimID(),
false);
2099 for (
const auto& glObject : glObjectLayer.second) {
2100 auto lane =
myNet->getAttributeCarriers()->retrieveLane(glObject.object,
false);
2114 for (
const auto& glObject : glObjectLayer.second) {
2115 auto additionalElement =
myNet->getAttributeCarriers()->retrieveAdditional(glObject.object,
false);
2116 if (additionalElement) {
2117 return additionalElement;
2129 for (
const auto& glObject : glObjectLayer.second) {
2130 auto demandElement =
myNet->getAttributeCarriers()->retrieveDemandElement(glObject.object,
false);
2131 if (demandElement) {
2132 return demandElement;
2144 for (
const auto& glObject : glObjectLayer.second) {
2145 auto polygon =
dynamic_cast<GNEPoly*
>(
myNet->getAttributeCarriers()->retrieveAdditional(glObject.object,
false));
2159 for (
const auto& glObject : glObjectLayer.second) {
2160 auto POI =
dynamic_cast<GNEPOI*
>(
myNet->getAttributeCarriers()->retrieveAdditional(glObject.object,
false));
2174 for (
const auto& glObject : glObjectLayer.second) {
2175 auto TAZ =
dynamic_cast<GNETAZ*
>(
myNet->getAttributeCarriers()->retrieveAdditional(glObject.object,
false));
2189 for (
const auto& glObject : glObjectLayer.second) {
2191 auto junction =
myNet->getAttributeCarriers()->retrieveJunction(glObject.object->getMicrosimID());
2192 if (junction->isShapeEdited()) {
2195 }
else if (glObject.object->getType() ==
GLO_CROSSING) {
2196 auto crossing =
myNet->getAttributeCarriers()->retrieveCrossing(glObject.object);
2197 if (crossing->isShapeEdited()) {
2201 auto connection =
myNet->getAttributeCarriers()->retrieveConnection(glObject.object);
2202 if (connection->isShapeEdited()) {
2215 switch (FXSELID(sel)) {
2244 switch (FXSELID(sel)) {
2264 switch (FXSELID(sel)) {
2292 switch (FXSELID(sel)) {
2338 }
else if (
myEditModes.isCurrentSupermodeDemand()) {
2340 switch (FXSELID(sel)) {
2386 }
else if (
myEditModes.isCurrentSupermodeData()) {
2388 switch (FXSELID(sel)) {
2421 if (edge !=
nullptr) {
2431 if (edge !=
nullptr) {
2435 if (oppositeEdges.size() > 0) {
2436 for (
const auto& oppositeEdge : oppositeEdges) {
2438 const auto reverseGeometry = oppositeEdge->getNBEdge()->getInnerGeometry().reverse();
2453 if (edge !=
nullptr) {
2456 const auto selectedEdges =
myNet->getAttributeCarriers()->getSelectedEdges();
2457 for (
const auto& selectedEdge : selectedEdges) {
2474 if (edge !=
nullptr) {
2476 myUndoList->begin(edge,
TL(
"Add Reverse edge for selected edges"));
2477 const auto selectedEdges =
myNet->getAttributeCarriers()->getSelectedEdges();
2478 for (
const auto& selectedEdge : selectedEdges) {
2495 if (edge !=
nullptr) {
2497 myUndoList->begin(edge,
TL(
"Add Reverse disconnected edge for selected edges"));
2498 const auto selectedEdges =
myNet->getAttributeCarriers()->getSelectedEdges();
2499 for (
const auto& selectedEdge : selectedEdges) {
2504 myUndoList->begin(edge,
TL(
"Add reverse disconnected edge"));
2516 if (edge !=
nullptr) {
2527 if (edge !=
nullptr) {
2531 const auto selectedEdges =
myNet->getAttributeCarriers()->getSelectedEdges();
2535 for (
const auto& selectedEdge : selectedEdges) {
2552 if (edge !=
nullptr) {
2554 myUndoList->begin(edge,
TL(
"straighten selected edges"));
2555 const auto selectedEdges =
myNet->getAttributeCarriers()->getSelectedEdges();
2556 for (
const auto& selectedEdge : selectedEdges) {
2574 if (edge !=
nullptr) {
2577 const auto selectedEdges =
myNet->getAttributeCarriers()->getSelectedEdges();
2578 for (
const auto& selectedEdge : selectedEdges) {
2595 if (edge !=
nullptr) {
2597 myUndoList->begin(edge,
TL(
"straighten elevation of selected edges"));
2598 const auto selectedEdges =
myNet->getAttributeCarriers()->getSelectedEdges();
2599 for (
const auto& selectedEdge : selectedEdges) {
2600 selectedEdge->straightenElevation(
myUndoList);
2604 myUndoList->begin(edge,
TL(
"straighten edge elevation"));
2616 if (edge !=
nullptr) {
2618 myUndoList->begin(edge,
TL(
"smooth elevation of selected edges"));
2619 const auto selectedEdges =
myNet->getAttributeCarriers()->getSelectedEdges();
2620 for (
const auto& selectedEdge : selectedEdges) {
2637 if (edge !=
nullptr) {
2640 const auto selectedEdges =
myNet->getAttributeCarriers()->getSelectedEdges();
2641 for (
const auto& selectedEdge : selectedEdges) {
2656 if (edge !=
nullptr) {
2657 myViewParent->getInspectorFrame()->getTemplateEditor()->setEdgeTemplate(edge);
2666 if ((edgeAtPosition !=
nullptr) &&
myViewParent->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate()) {
2668 myUndoList->begin(edgeAtPosition,
TL(
"copy edge template"));
2671 for (
const auto& edge :
myNet->getAttributeCarriers()->getEdges()) {
2672 if (edge.second->isAttributeCarrierSelected()) {
2673 edge.second->copyTemplate(
myViewParent->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate(),
myUndoList);
2692 if (polygonUnderMouse) {
2696 myNet->getViewNet()->getUndoList()->begin(polygonUnderMouse,
TL(
"simplify shapes"));
2698 const auto selectedShapes =
myNet->getAttributeCarriers()->getSelectedShapes();
2700 for (
const auto& selectedShape : selectedShapes) {
2702 if ((selectedShape->getTagProperty()->getTag() ==
SUMO_TAG_POLY) ||
2706 dynamic_cast<GNEPoly*
>(selectedShape)->simplifyShape();
2710 myNet->getViewNet()->getUndoList()->end();
2722 if (polygonUnderMouse) {
2734 if (polygonUnderMouse) {
2738 myNet->getViewNet()->getUndoList()->begin(polygonUnderMouse,
TL(
"close polygon shapes"));
2740 const auto selectedShapes =
myNet->getAttributeCarriers()->getSelectedShapes();
2742 for (
const auto& selectedShape : selectedShapes) {
2744 if ((selectedShape->getTagProperty()->getTag() ==
SUMO_TAG_POLY) ||
2748 dynamic_cast<GNEPoly*
>(selectedShape)->closePolygon();
2752 myNet->getViewNet()->getUndoList()->end();
2766 if (polygonUnderMouse) {
2770 myNet->getViewNet()->getUndoList()->begin(polygonUnderMouse,
TL(
"open polygon shapes"));
2772 const auto selectedShapes =
myNet->getAttributeCarriers()->getSelectedShapes();
2774 for (
const auto& selectedShape : selectedShapes) {
2776 if ((selectedShape->getTagProperty()->getTag() ==
SUMO_TAG_POLY) ||
2780 dynamic_cast<GNEPoly*
>(selectedShape)->openPolygon();
2784 myNet->getViewNet()->getUndoList()->end();
2798 if (polygonUnderMouse) {
2802 std::vector<GNEAttributeCarrier*> ACsUnderPolygon;
2807 ACsUnderPolygon.push_back(AC);
2809 ACsUnderPolygon.push_back(AC);
2810 }
else if (!AC->getTagProperty()->isSymbol() && (AC != polygonUnderMouse)) {
2811 ACsUnderPolygon.push_back(AC);
2815 if (ACsUnderPolygon.size() > 0) {
2819 for (
const auto& AC : ACsUnderPolygon) {
2823 myNet->getViewNet()->getUndoList()->end();
2835 if (polygonUnderMouse) {
2843 for (
const auto& triangle : triangulation) {
2846 basePolygon->addPositionVectorAttribute(
SUMO_ATTR_SHAPE, triangle.getShape());
2851 myNet->deleteAdditional(polygonUnderMouse,
myNet->getViewNet()->getUndoList());
2853 myNet->getViewNet()->getUndoList()->end();
2862 if (polygonUnderMouse) {
2872 auto undoList =
myNet->getViewNet()->getUndoList();
2877 undoList->begin(shapeEdited,
TL(
"simplify edited shape"));
2887 auto undoList =
myNet->getViewNet()->getUndoList();
2892 undoList->begin(shapeEdited,
TL(
"straighten edited shape"));
2902 auto undoList =
myNet->getViewNet()->getUndoList();
2907 undoList->begin(shapeEdited,
TL(
"simplify edited shape"));
2917 auto undoList =
myNet->getViewNet()->getUndoList();
2922 undoList->begin(shapeEdited,
TL(
"simplify edited shape"));
2932 auto undoList =
myNet->getViewNet()->getUndoList();
2939 undoList->begin(shapeEdited,
TL(
"simplify edited shape"));
2949 auto undoList =
myNet->getViewNet()->getUndoList();
2956 undoList->begin(shapeEdited,
TL(
"simplify edited shape"));
2966 auto undoList =
myNet->getViewNet()->getUndoList();
2971 undoList->begin(shapeEdited,
TL(
"simplify edited shape"));
3004 double posOverLane = lane->getLaneShape().nearest_offset_to_point2D(
POI->getPositionInView());
3005 double lateralOffset = lane->getLaneShape().positionAtOffset(posOverLane).distanceTo(
POI->getPositionInView());
3006 if (lateralOffset < minorLateralOffset) {
3007 minorPosOverLane = posOverLane;
3008 minorLateralOffset = lateralOffset;
3106 if (demandElement) {
3120 if (demandElement) {
3137 if (edge !=
nullptr) {
3145 if ((geometryPointDialog.getResult() ==
GNEDialog::Result::ACCEPT) && (geometryPointDialog.getEditedPosition() != edgeGeometry[index])) {
3147 edgeGeometry[index] = geometryPointDialog.getEditedPosition();
3149 myUndoList->begin(edge,
TL(
"change edge Geometry Point position"));
3154 }
else if (index == ((
int)edgeGeometry.size() - 1)) {
3159 edgeGeometry.pop_front();
3160 edgeGeometry.pop_back();
3167 }
else if (poly !=
nullptr) {
3175 if ((geometryPointDialog.getResult() ==
GNEDialog::Result::ACCEPT) && (geometryPointDialog.getEditedPosition() != polygonGeometry[index])) {
3177 polygonGeometry[index] = geometryPointDialog.getEditedPosition();
3179 myUndoList->begin(poly,
TL(
"change polygon Geometry Point position"));
3185 }
else if (
TAZ !=
nullptr) {
3193 if ((geometryPointDialog.getResult() ==
GNEDialog::Result::ACCEPT) && (geometryPointDialog.getEditedPosition() != TAZGeometry[index])) {
3195 TAZGeometry[index] = geometryPointDialog.getEditedPosition();
3213 if (laneAtPopupPosition !=
nullptr) {
3219 const auto selectedEdges =
myNet->getAttributeCarriers()->getSelectedEdges();
3221 myUndoList->begin(edge,
TL(
"reset end points of selected edges"));
3223 for (
const auto& selectedEdge : selectedEdges) {
3247 if (laneAtPopupPosition !=
nullptr) {
3251 myUndoList->begin(laneAtPopupPosition,
TL(
"duplicate selected lanes"));
3252 const auto selectedLanes =
myNet->getAttributeCarriers()->getSelectedLanes();
3253 for (
const auto& lane : selectedLanes) {
3258 myUndoList->begin(laneAtPopupPosition,
TL(
"duplicate lane"));
3284 if (laneAtPopupPosition !=
nullptr) {
3288 myUndoList->begin(laneAtPopupPosition,
TL(
"reset custom lane shapes"));
3289 const auto selectedLanes =
myNet->getAttributeCarriers()->getSelectedLanes();
3290 for (
const auto& lane : selectedLanes) {
3295 myUndoList->begin(laneAtPopupPosition,
TL(
"reset custom lane shape"));
3307 if (laneAtPopupPosition !=
nullptr) {
3311 myUndoList->begin(laneAtPopupPosition,
TL(
"reset opposite lanes"));
3312 const auto selectedLanes =
myNet->getAttributeCarriers()->getSelectedLanes();
3313 for (
const auto& lane : selectedLanes) {
3318 myUndoList->begin(laneAtPopupPosition,
TL(
"reset opposite lane"));
3330 if (laneAtPopupPosition) {
3332 switch (FXSELID(sel)) {
3371 if (laneAtPopupPosition !=
nullptr) {
3375 myNet->getDemandPathManager()->getPathCalculator()->calculateReachability(vClass, laneAtPopupPosition->
getParentEdge());
3377 myUndoList->begin(laneAtPopupPosition,
TL(
"select lane reachability"));
3378 for (
const auto& edge :
myNet->getAttributeCarriers()->getEdges()) {
3379 for (
const auto& lane : edge.second->getChildLanes()) {
3380 if (lane->getReachability() >= 0) {
3405 FXEvent* evt = (FXEvent*)eventData;
3412 if (evt->click_count == 2) {
3413 handle(
this, FXSEL(SEL_DOUBLECLICKED, 0), eventData);
3427 bool cursorMoveView =
false;
3428 bool cursorInspect =
false;
3429 bool cursorSelect =
false;
3430 bool cursorMoveElement =
false;
3431 bool cursorDelete =
false;
3440 cursorMoveView =
true;
3444 cursorInspect =
true;
3446 cursorSelect =
true;
3448 cursorMoveElement =
true;
3450 cursorDelete =
true;
3452 }
else if (
myEditModes.isCurrentSupermodeDemand()) {
3457 cursorMoveView =
true;
3461 cursorInspect =
true;
3463 cursorSelect =
true;
3465 cursorMoveElement =
true;
3467 cursorDelete =
true;
3469 }
else if (
myEditModes.isCurrentSupermodeData()) {
3472 cursorMoveView =
true;
3476 cursorInspect =
true;
3478 cursorSelect =
true;
3480 cursorDelete =
true;
3488 }
else if (cursorInspect) {
3499 }
else if (cursorSelect) {
3510 }
else if (cursorMoveElement) {
3514 }
else if (cursorDelete) {
3538 const float minB[2] = { (float)bound.
xmin(), (float)bound.
ymin() };
3539 const float maxB[2] = { (float)bound.
xmax(), (float)bound.
ymax() };
3543 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
3544 glEnable(GL_POLYGON_OFFSET_FILL);
3545 glEnable(GL_POLYGON_OFFSET_LINE);
3592 const auto selectedJunctions =
myNet->getAttributeCarriers()->getSelectedJunctions();
3593 for (
const auto& selectedJunction : selectedJunctions) {
3595 for (
const auto& incomingEdge : selectedJunction->getGNEIncomingEdges()) {
3599 for (
const auto& outgoingEdge : selectedJunction->getGNEOutgoingEdges()) {
3634 WRITE_WARNING(
TL(
"Grid is still active, press ctrl+g to deactivate"));
3653 myUndoList->begin(junction,
TL(
"reset custom junction shapes"));
3654 const auto selectedJunctions =
myNet->getAttributeCarriers()->getSelectedJunctions();
3655 for (
const auto& selectedJunction : selectedJunctions) {
3660 myUndoList->begin(junction,
TL(
"reset custom junction shape"));
3675 if (junction !=
nullptr) {
3688 if (junction !=
nullptr) {
3701 if (junction !=
nullptr) {
3713 if (junction !=
nullptr) {
3725 if (junction !=
nullptr) {
3754 if (junction !=
nullptr) {
3761 for (
const auto& AC : frontElements) {
3763 AC->unmarkForDrawingFront();
3768 const auto selectedJunctions =
myNet->getAttributeCarriers()->getSelectedJunctions();
3770 for (
const auto& selectedJunction : selectedJunctions) {
3788 if (junction !=
nullptr) {
3795 for (
const auto& AC : frontElements) {
3797 AC->unmarkForDrawingFront();
3802 const auto selectedJunctions =
myNet->getAttributeCarriers()->getSelectedJunctions();
3804 for (
const auto& selectedJunction : selectedJunctions) {
3822 if (junction !=
nullptr) {
3825 const auto selectedJunctions =
myNet->getAttributeCarriers()->getSelectedJunctions();
3827 for (
const auto& selectedJunction : selectedJunctions) {
3830 myNet->getViewNet()->getUndoList()->end();
3837 myViewParent->getTLSEditorFrame()->editJunction(junction);
3850 if (junction !=
nullptr) {
3859 const auto selectedJunctions =
myNet->getAttributeCarriers()->getSelectedJunctions();
3861 for (
const auto& selectedJunction : selectedJunctions) {
3863 if (selectedJunction->getNBNode()->getControllingTLS().empty()) {
3871 const auto TLSDef = (*junction->
getNBNode()->getControllingTLS().begin());
3872 if (!
myNet->getTLLogicCont().exist(TLSDef->getID() +
"_joined")) {
3878 myNet->getViewNet()->getUndoList()->end();
3883 myViewParent->getTLSEditorFrame()->editJunction(junction);
3900 WRITE_WARNING(
TL(
"Grid is still active, press ctrl+g to deactivate"));
3935 WRITE_WARNING(
TL(
"Grid is still active, press ctrl+g to deactivate"));
3953 if (walkingArea->
getParentJunctions().front()->getNBNode()->getShape().size() == 0) {
3958 WRITE_WARNING(
TL(
"Grid is still active, press ctrl+g to deactivate"));
4176 std::set<GNEEdge*> edgesToUpdate;
4178 for (
const auto& vehicle :
myNet->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VEHICLE)) {
4179 if (vehicle.second->getParentEdges().size() > 0) {
4180 edgesToUpdate.insert(vehicle.second->getParentEdges().front());
4181 }
else if (vehicle.second->getChildDemandElements().size() > 0 && (vehicle.second->getChildDemandElements().front()->getTagProperty()->getTag() ==
GNE_TAG_ROUTE_EMBEDDED)) {
4182 edgesToUpdate.insert(vehicle.second->getChildDemandElements().front()->getParentEdges().front());
4186 if (routeFlow.second->getParentEdges().size() > 0) {
4187 edgesToUpdate.insert(routeFlow.second->getParentEdges().front());
4188 }
else if (routeFlow.second->getChildDemandElements().size() > 0 && (routeFlow.second->getChildDemandElements().front()->getTagProperty()->getTag() ==
GNE_TAG_ROUTE_EMBEDDED)) {
4189 edgesToUpdate.insert(routeFlow.second->getChildDemandElements().front()->getParentEdges().front());
4192 for (
const auto& trip :
myNet->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_TRIP)) {
4193 if (trip.second->getParentEdges().size() > 0) {
4194 edgesToUpdate.insert(trip.second->getParentEdges().front());
4197 for (
const auto& flow :
myNet->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_FLOW)) {
4198 if (flow.second->getParentEdges().size() > 0) {
4199 edgesToUpdate.insert(flow.second->getParentEdges().front());
4203 for (
const auto& edge : edgesToUpdate) {
4204 edge->updateVehicleSpreadGeometries();
4421 if (personOrPersonPlan) {
4475 if (containerOrContainerPlan) {
4699 if (AC && !AC->isAttributeCarrierSelected()) {
4700 AC->selectAttributeCarrier();
4710 if (AC && AC->isAttributeCarrierSelected()) {
4711 AC->unselectAttributeCarrier();
4721 if (edge && !edge->isAttributeCarrierSelected()) {
4722 edge->selectAttributeCarrier();
4732 if (edge && edge->isAttributeCarrierSelected()) {
4733 edge->unselectAttributeCarrier();
4796 auto& menuChecks =
myViewParent->getGNEAppWindows()->getEditMenuCommands().networkViewOptions;
4814 myViewParent->getGNEAppWindows()->getEditMenuCommands().networkViewOptions.hideNetworkViewOptionsMenuChecks();
4815 myViewParent->getGNEAppWindows()->getEditMenuCommands().demandViewOptions.hideDemandViewOptionsMenuChecks();
4816 myViewParent->getGNEAppWindows()->getEditMenuCommands().dataViewOptions.hideDataViewOptionsMenuChecks();
4822 menuChecks.menuCheckToggleGrid->show();
4823 menuChecks.menuCheckToggleDrawJunctionShape->show();
4824 menuChecks.menuCheckDrawSpreadVehicles->show();
4825 menuChecks.menuCheckShowDemandElements->show();
4827 menuChecks.separator->show();
4833 myViewParent->getInspectorFrame()->focusUpperElement();
4843 menuChecks.menuCheckSelectEdges->show();
4844 menuChecks.menuCheckShowConnections->show();
4845 menuChecks.menuCheckShowAdditionalSubElements->show();
4846 menuChecks.menuCheckShowTAZElements->show();
4847 menuChecks.menuCheckShowJunctionBubble->show();
4864 menuChecks.menuCheckShowAdditionalSubElements->show();
4865 menuChecks.menuCheckShowTAZElements->show();
4866 menuChecks.menuCheckShowJunctionBubble->show();
4868 menuChecks.menuCheckSelectEdges->show();
4869 menuChecks.menuCheckShowConnections->show();
4884 menuChecks.menuCheckSelectEdges->show();
4885 menuChecks.menuCheckShowConnections->show();
4886 menuChecks.menuCheckExtendSelection->show();
4887 menuChecks.menuCheckShowAdditionalSubElements->show();
4888 menuChecks.menuCheckShowTAZElements->show();
4889 menuChecks.menuCheckShowJunctionBubble->show();
4894 myViewParent->getCreateEdgeFrame()->focusUpperElement();
4902 menuChecks.menuCheckChainEdges->show();
4903 menuChecks.menuCheckAutoOppositeEdge->show();
4904 menuChecks.menuCheckShowJunctionBubble->show();
4916 menuChecks.menuCheckMergeAutomatically->show();
4917 menuChecks.menuCheckShowJunctionBubble->show();
4918 menuChecks.menuCheckMoveElevation->show();
4922 myViewParent->getConnectorFrame()->focusUpperElement();
4928 myViewParent->getTLSEditorFrame()->focusUpperElement();
4934 menuChecks.menuCheckChangeAllPhases->show();
4938 myViewParent->getAdditionalFrame()->focusUpperElement();
4944 menuChecks.menuCheckShowAdditionalSubElements->show();
4966 myViewParent->getProhibitionFrame()->focusUpperElement();
4986 menuChecks.updateShortcuts();
4992 myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
4993 myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->repaint();
5004 auto& menuChecks =
myViewParent->getGNEAppWindows()->getEditMenuCommands().demandViewOptions;
5022 myViewParent->getGNEAppWindows()->getEditMenuCommands().networkViewOptions.hideNetworkViewOptionsMenuChecks();
5023 myViewParent->getGNEAppWindows()->getEditMenuCommands().demandViewOptions.hideDemandViewOptionsMenuChecks();
5024 myViewParent->getGNEAppWindows()->getEditMenuCommands().dataViewOptions.hideDataViewOptionsMenuChecks();
5036 menuChecks.menuCheckToggleGrid->show();
5037 menuChecks.menuCheckToggleDrawJunctionShape->show();
5038 menuChecks.menuCheckDrawSpreadVehicles->show();
5039 menuChecks.menuCheckHideShapes->show();
5040 menuChecks.menuCheckShowAllTrips->show();
5041 menuChecks.menuCheckShowAllPersonPlans->show();
5042 menuChecks.menuCheckLockPerson->show();
5043 menuChecks.menuCheckShowAllContainerPlans->show();
5044 menuChecks.menuCheckLockContainer->show();
5045 menuChecks.menuCheckShowOverlappedRoutes->show();
5047 menuChecks.separator->show();
5053 myViewParent->getInspectorFrame()->focusUpperElement();
5060 menuChecks.menuCheckHideNonInspectedDemandElements->show();
5093 myViewParent->getRouteDistributionFrame()->focusUpperElement();
5114 myViewParent->getTypeDistributionFrame()->focusUpperElement();
5135 myViewParent->getPersonPlanFrame()->focusUpperElement();
5142 myViewParent->getContainerFrame()->focusUpperElement();
5149 myViewParent->getContainerPlanFrame()->focusUpperElement();
5158 menuChecks.updateShortcuts();
5164 myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
5165 myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->repaint();
5176 auto& menuChecks =
myViewParent->getGNEAppWindows()->getEditMenuCommands().dataViewOptions;
5192 myViewParent->getGNEAppWindows()->getEditMenuCommands().networkViewOptions.hideNetworkViewOptionsMenuChecks();
5193 myViewParent->getGNEAppWindows()->getEditMenuCommands().demandViewOptions.hideDemandViewOptionsMenuChecks();
5194 myViewParent->getGNEAppWindows()->getEditMenuCommands().dataViewOptions.hideDataViewOptionsMenuChecks();
5200 menuChecks.menuCheckToggleDrawJunctionShape->show();
5201 menuChecks.menuCheckShowAdditionals->show();
5202 menuChecks.menuCheckShowShapes->show();
5203 menuChecks.menuCheckShowDemandElements->show();
5205 menuChecks.separator->show();
5211 myViewParent->getInspectorFrame()->focusUpperElement();
5221 menuChecks.menuCheckToggleTAZRelDrawing->show();
5222 menuChecks.menuCheckToggleTAZDrawFill->show();
5223 menuChecks.menuCheckToggleTAZRelOnlyFrom->show();
5224 menuChecks.menuCheckToggleTAZRelOnlyTo->show();
5237 menuChecks.menuCheckToggleTAZRelDrawing->show();
5238 menuChecks.menuCheckToggleTAZRelOnlyFrom->show();
5239 menuChecks.menuCheckToggleTAZRelOnlyTo->show();
5252 menuChecks.menuCheckToggleTAZRelDrawing->show();
5253 menuChecks.menuCheckToggleTAZRelOnlyFrom->show();
5254 menuChecks.menuCheckToggleTAZRelOnlyTo->show();
5265 myViewParent->getEdgeRelDataFrame()->focusUpperElement();
5272 myViewParent->getTAZRelDataFrame()->focusUpperElement();
5282 menuChecks.menuCheckToggleTAZRelDrawing->show();
5283 menuChecks.menuCheckToggleTAZDrawFill->show();
5284 menuChecks.menuCheckToggleTAZRelOnlyFrom->show();
5285 menuChecks.menuCheckToggleTAZRelOnlyTo->show();
5298 menuChecks.updateShortcuts();
5304 myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->recalc();
5305 myViewParent->getGNEAppWindows()->getToolbarsGrip().modes->repaint();
5331 GNEEdge* edge =
myNet->getAttributeCarriers()->retrieveEdge(AC->
getID(),
false);
5354 if (TAZSourceSink) {
5361 if (additionalElement) {
5373 if (demandElement) {
5390 GNEDataInterval* dataInterval =
myNet->getAttributeCarriers()->retrieveDataInterval(AC,
false);
5429 myViewParent->getTypeDistributionFrame()->getDistributionSelector()->refreshDistributionSelector();
5432 myViewParent->getRouteDistributionFrame()->getDistributionSelector()->refreshDistributionSelector();
5475 bool deleteLastCreatedPoint =
false;
5477 if (
myViewParent->getShapeFrame()->getDrawingShapeModule()->isDrawing()) {
5478 temporalShape =
myViewParent->getShapeFrame()->getDrawingShapeModule()->getTemporalShape();
5479 deleteLastCreatedPoint =
myViewParent->getShapeFrame()->getDrawingShapeModule()->getDeleteLastCreatedPoint();
5480 }
else if (
myViewParent->getTAZFrame()->getDrawingShapeModule()->isDrawing()) {
5481 temporalShape =
myViewParent->getTAZFrame()->getDrawingShapeModule()->getTemporalShape();
5482 deleteLastCreatedPoint =
myViewParent->getTAZFrame()->getDrawingShapeModule()->getDeleteLastCreatedPoint();
5485 if (temporalShape.size() > 0) {
5498 if (deleteLastCreatedPoint) {
5531 glTranslated(mousePosition.
x(), mousePosition.
y(), 0.1);
5535 const double circleWidth =
myVisualizationSettings->neteditSizeSettings.junctionBubbleRadius * junctionExaggeration;
5586 auto shape = lane->getLaneShape();
5588 shape.move2side(lane->getDrawingConstants()->getDrawingWidth() * -1);
5590 const auto splitPosition = shape.positionAtOffset2D(offset);
5602 glTranslated(splitPosition.x(), splitPosition.y(), 0.1);
5606 const double circleWidth =
myVisualizationSettings->neteditSizeSettings.junctionBubbleRadius * junctionExaggeration;
5631 glTranslated(junction->getNBNode()->getPosition().x(), junction->getNBNode()->getPosition().y(), 0.1);
5635 const double circleWidth = (junction->getNBNode()->getRadius() < 0) ? 4.0 : junction->getNBNode()->getRadius();
5650 const auto junctionPos =
myViewParent->getTLSEditorFrame()->getTLSJunction()->getCurrentJunction()->getNBNode()->getPosition();
5656 for (
const auto& E1ID :
myViewParent->getTLSEditorFrame()->getTLSAttributes()->getE1Detectors()) {
5680 const auto junctionPos =
myViewParent->getTLSEditorFrame()->getTLSJunction()->getCurrentJunction()->getNBNode()->getPosition();
5686 for (
const auto& selectedJunctionID :
myViewParent->getTLSEditorFrame()->getTLSJunction()->getSelectedJunctionIDs()) {
5688 const auto selectedJunction =
myNet->getAttributeCarriers()->retrieveJunction(selectedJunctionID);
5838 if (
myViewParent->getInspectorFrame()->getAttributesEditor()->isReparenting()) {
5860 if (
myViewParent->getDeleteFrame()->getDeleteOptions()->deleteOnlyGeometryPoints()) {
5866 myViewParent->getDeleteFrame()->removeSelectedAttributeCarriers();
5913 }
else if (oppositeEdges.size() > 0) {
5954 if (AC && (AC->getTagProperty()->isNetworkElement() || AC->getTagProperty()->isAdditionalElement())) {
5956 if (AC->isAttributeCarrierSelected()) {
6036 bool updateTemporalShape =
false;
6041 if (!updateTemporalShape) {
6165 if (markAC->isAttributeCarrierSelected()) {
6166 myViewParent->getDeleteFrame()->removeSelectedAttributeCarriers();
6202 if (markAC->isAttributeCarrierSelected()) {
6250 if (
myViewParent->getPersonFrame()->getPlanSelector()->getCurrentPlanTagProperties()) {
6252 if (
myViewParent->getPersonFrame()->getPlanSelector()->getCurrentPlanTagProperties()->planRoute()) {
6267 if (
myViewParent->getPersonPlanFrame()->getPlanSelector()->getCurrentPlanTagProperties()) {
6269 if (
myViewParent->getPersonPlanFrame()->getPlanSelector()->getCurrentPlanTagProperties()->planRoute()) {
6350 if (AC && AC->getTagProperty()->getTag() ==
SUMO_TAG_TAZ) {
6364 if (AC->isAttributeCarrierSelected()) {
6365 if (!AC->getGUIGlObject()->isGLObjectLocked()) {
6366 myViewParent->getDeleteFrame()->removeSelectedAttributeCarriers();
FXDEFMAP(GNEViewNet) GNEViewNetMap[]
@ DATA_MEANDATA
mode for create meanData elements
@ DATA_EDGERELDATA
mode for create edgeRelData elements
@ DATA_SELECT
mode for selecting data elements
@ DATA_TAZRELDATA
mode for create TAZRelData elements
@ DATA_INSPECT
mode for inspecting data elements
@ DATA_EDGEDATA
mode for create edgeData 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..).
@ NETWORK_SHAPE
Mode for editing Polygons.
@ NETWORK_DELETE
mode for deleting network elements
@ NETWORK_MOVE
mode for moving network elements
@ NETWORK_WIRE
Mode for editing wires.
@ NETWORK_ADDITIONAL
Mode for editing additionals.
@ NETWORK_TAZ
Mode for editing TAZ.
@ NETWORK_CREATE_EDGE
mode for creating new edges
@ NETWORK_TLS
mode for editing tls
@ NETWORK_CROSSING
Mode for editing crossing.
@ NETWORK_SELECT
mode for selecting network elements
@ NETWORK_INSPECT
mode for inspecting network elements
@ NETWORK_PROHIBITION
Mode for editing connection prohibitions.
@ NETWORK_CONNECT
mode for connecting lanes
@ NETWORK_DECAL
Mode for editing decals.
@ DEMAND_PERSONPLAN
Mode for editing person plan.
@ DEMAND_INSPECT
mode for inspecting demand elements
@ DEMAND_CONTAINER
Mode for editing container.
@ DEMAND_DELETE
mode for deleting demand elements
@ DEMAND_ROUTEDISTRIBUTION
Mode for editing route distributions.
@ DEMAND_PERSON
Mode for editing person.
@ DEMAND_TYPEDISTRIBUTION
Mode for editing type distributions.
@ DEMAND_SELECT
mode for selecting demand elements
@ DEMAND_ROUTE
Mode for editing routes.
@ DEMAND_VEHICLE
Mode for editing vehicles.
@ DEMAND_MOVE
mode for moving demand elements
@ DEMAND_STOP
Mode for editing stops.
@ DEMAND_CONTAINERPLAN
Mode for editing container plan.
@ DEMAND_TYPE
Mode for editing types.
@ MID_GNE_NETWORKVIEWOPTIONS_AUTOOPPOSITEEDGES
automatically create opposite edge
@ MID_GNE_ADDSELECT_EDGE
Add edge to selected items - menu entry.
@ MID_HOTKEY_F3_SUPERMODE_DEMAND
select demand supermode in netedit
@ MID_GNE_LANE_EDIT_SHAPE
edit lane shape
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWALLPERSONPLANS
show all person plans
@ MID_HOTKEY_SHIFT_S_LOCATESTOP
Locate stop - button.
@ MID_GNE_LANE_TRANSFORM_BIKE
transform lane to bikelane
@ MID_GNE_DATAVIEWOPTIONS_TAZRELDRAWING
toggle TAZRel drawing
@ MID_GNE_EDGE_REVERSE
reverse an edge
@ MID_GNE_JUNCTION_ADDTLS
Add TLS into junction.
@ MID_ADDSELECT
Add to selected items - menu entry.
@ MID_HOTKEY_U_MODE_DECAL_TYPEDISTRIBUTION
hotkey for mode decal AND type distribution
@ MID_GNE_LANE_ADD_BUS
add busLane
@ MID_GNE_NETWORKVIEWOPTIONS_DRAWSPREADVEHICLES
Draw vehicles in begin position or spread in lane.
@ MID_GNE_JUNCTION_RESET_EDGE_ENDPOINTS
reset edge endpoints
@ MID_GNE_NETWORKVIEWOPTIONS_MOVEELEVATION
move elevation instead of x,y
@ MID_GNE_NETWORKVIEWOPTIONS_HIDECONNECTIONS
hide connections
@ MID_GNE_REMOVESELECT_EDGE
Remove edge from selected items - Menu Entry.
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWCONNECTIONS
show connections
@ MID_GNE_INTERVALBAR_BEGIN
begin changed in InterbalBar
@ MID_GNE_DATAVIEWOPTIONS_TAZRELONLYTO
toggle draw TAZRel only to
@ MID_GNE_ADDREVERSE
add reverse element
@ MID_GNE_CONNECTION_SMOOTH_SHAPE
@ brief smooth connection shape
@ MID_GNE_DATAVIEWOPTIONS_TOGGLEDRAWJUNCTIONSHAPE
toggle draw junction shape
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWTAZELEMENTS
show TAZ elements
@ MID_GNE_DEMANDVIEWOPTIONS_LOCKPERSON
lock person
@ MID_HOTKEY_Z_MODE_TAZ_TAZREL
hotkey for mode editing TAZ and TAZRel
@ MID_GNE_DEMANDVIEWOPTIONS_TOGGLEDRAWJUNCTIONSHAPE
toggle draw junction shape
@ MID_GNE_JUNCTION_CLEAR_CONNECTIONS
clear junction's connections
@ MID_HOTKEY_A_MODE_STARTSIMULATION_ADDITIONALS_STOPS
hotkey for start simulation in SUMO and set editing mode additionals AND stops in netedit
@ MID_GNE_JUNCTION_SELECT_ROUNDABOUT
select all roundabout nodes and edges of the current roundabout
@ MID_GNE_JUNCTION_RESET_SHAPE
reset junction shape
@ MID_GNE_JUNCTION_RESET_CONNECTIONS
reset junction's connections
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWGRID
show grid
@ MID_GNE_POLYGON_TRIANGULATE
triangulate polygon
@ MID_GNE_JUNCTION_SPLIT
turn junction into multiple junctions
@ MID_GNE_EDGE_STRAIGHTEN_ELEVATION
interpolate z values linear between junctions
@ MID_HOTKEY_D_MODE_SINGLESIMULATIONSTEP_DELETE
hotkey for perform a single simulation step in SUMO and set delete mode in netedit
@ MID_GNE_NETWORKVIEWOPTIONS_CHAINEDGES
create edges in chain mode
@ MID_GNE_DATAVIEWOPTIONS_SHOWDEMANDELEMENTS
show demand elements
@ MID_GNE_POLYGON_CLOSE
close opened polygon
@ MID_GNE_EDGE_SMOOTH
smooth geometry
@ MID_HOTKEY_C_MODE_CONNECT_CONTAINER
hotkey for mode connecting lanes AND container
@ MID_HOTKEY_H_MODE_PROHIBITION_CONTAINERPLAN
hotkey for mode prohibition AND container plan
@ MID_HOTKEY_SHIFT_O_LOCATEPOI
Locate poi - button.
@ MID_HOTKEY_W_MODE_WIRE_ROUTEDISTRIBUTION
hotkey for mode editing overhead wires AND route distributions
@ MID_HOTKEY_T_MODE_TLS_TYPE
hotkey for mode editing TLS AND Vehicle Types
@ MID_GNE_LANE_RESET_CUSTOMSHAPE
reset custom shape
@ MID_GNE_EDGE_STRAIGHTEN
remove inner geometry
@ MID_GNE_DEMANDVIEWOPTIONS_HIDESHAPES
hide shapes
@ MID_GNE_LANE_TRANSFORM_BUS
transform lane to busLane
@ MID_GNE_POLYGON_SET_FIRST_POINT
Set a vertex of polygon as first vertex.
@ MID_GNE_SHAPEEDITED_DELETE_GEOMETRY_POINT
delete geometry point in shape edited
@ MID_HOTKEY_SHIFT_A_LOCATEADDITIONAL
Locate additional structure - button.
@ MID_GNE_LANE_DUPLICATE
duplicate a lane
@ MID_GNE_DATAVIEWOPTIONS_SHOWADDITIONALS
show additionals
@ MID_HOTKEY_SHIFT_R_LOCATEROUTE
Locate route - button.
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWBUBBLES
show junctions as bubbles
@ MID_GNE_LANE_ADD_GREENVERGE_FRONT
add greenVerge front of current lane
@ MID_GNE_INTERVALBAR_END
end changed in InterbalBar
@ MID_HOTKEY_SHIFT_W_LOCATEWALKINGAREA
Locate edge - button.
@ MID_GNE_NETWORKVIEWOPTIONS_EXTENDSELECTION
extend selection
@ MID_GNE_LANE_REMOVE_GREENVERGE
remove greenVerge
@ MID_HOTKEY_S_MODE_STOPSIMULATION_SELECT
hotkey for stop simulation in SUMO and set select mode in netedit
@ MID_GNE_EDGE_ADD_REVERSE_DISCONNECTED
add reverse edge disconnected (used for for spreadtype center)
@ MID_GNE_EDGE_SPLIT_BIDI
split an edge
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWSUBADDITIONALS
show sub-additionals
@ MID_GNE_JUNCTION_REPLACE
turn junction into geometry node
@ MID_HOTKEY_SHIFT_C_LOCATECONTAINER
Locate container - button.
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWALLCONTAINERPLANS
show all container plans
@ MID_HOTKEY_SHIFT_V_LOCATEVEHICLE
Locate vehicle - button.
@ MID_GNE_VIEW_DEFAULT
set default view
@ MID_HOTKEY_F4_SUPERMODE_DATA
select data supermode in netedit
@ MID_HOTKEY_SHIFT_L_LOCATEPOLY
Locate polygons - button.
@ MID_GNE_LANE_REMOVE_BIKE
remove bikelane
@ MID_GNE_SHAPEEDITED_RESET
reset shape
@ MID_HOTKEY_SHIFT_E_LOCATEEDGE
Locate edge - button.
@ MID_GNE_VIEW_JUPEDSIM
set juPedSim view
@ MID_GNE_SHAPEEDITED_STRAIGHTEN
straighten shape edited geometry
@ MID_GNE_LANE_RESET_OPPOSITELANE
reset opposite lane
@ MID_GNE_INTERVALBAR_PARAMETER
parameter changed in InterbalBar
@ MID_HOTKEY_R_MODE_CROSSING_ROUTE_EDGERELDATA
hotkey for mode editing crossing, routes and edge rel datas
@ MID_GNE_JUNCTION_CONVERT_ROUNDABOUT
convert junction to roundabout
@ MID_GNE_DATAVIEWOPTIONS_TAZDRAWFILL
toggle draw TAZ fill
@ MID_REACHABILITY
show reachability from a given lane
@ MID_HOTKEY_L_MODE_PERSONPLAN
hotkey for mode person plan
@ MID_GNE_EDGE_RESET_LENGTH
reset custom lengths
@ MID_HOTKEY_V_MODE_VEHICLE
hotkey for mode create vehicles
@ MID_HOTKEY_SHIFT_P_LOCATEPERSON
Locate person - button.
@ MID_HOTKEY_I_MODE_INSPECT
hotkey for mode inspecting object attributes
@ MID_GNE_LANE_REMOVE_BUS
remove busLane
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWDEMANDELEMENTS
show demand elements
@ MID_HOTKEY_SHIFT_J_LOCATEJUNCTION
Locate junction - button.
@ MID_GNE_POLYGON_SELECT
select elements within polygon boundary
@ MID_GNE_JUNCTION_SPLIT_RECONNECT
turn junction into multiple junctions and reconnect them heuristically
@ MID_GNE_REVERSE
reverse current element
@ MID_OPEN_ADDITIONAL_DIALOG
open additional dialog (used in netedit)
@ MID_GNE_WALKINGAREA_EDIT_SHAPE
edit crossing shape
@ MID_GNE_DEMANDVIEWOPTIONS_HIDENONINSPECTED
hide non-inspected demand element
@ MID_GNE_JUNCTION_EDIT_SHAPE
edit junction shape
@ MID_GNE_LANE_REMOVE_SIDEWALK
remove sidewalk
@ MID_GNE_SHAPEEDITED_OPEN
open closed shape edited
@ MID_GNE_EDGE_RESET_ENDPOINT
reset default geometry endpoints
@ MID_GNE_INTERVALBAR_GENERICDATATYPE
generic data selected
@ MID_GNE_LANE_ADD_GREENVERGE_BACK
add greenVerge back of current lane
@ MID_GNE_NETWORKVIEWOPTIONS_MERGEAUTOMATICALLY
don't ask before merging junctions
@ MID_GNE_EDGE_SMOOTH_ELEVATION
smooth elevation with regard to adjoining edges
@ MID_GNE_NETWORKVIEWOPTIONS_CHANGEALLPHASES
change all phases
@ MID_GNE_DATAVIEWOPTIONS_SHOWSHAPES
show shapes
@ MID_HOTKEY_E_MODE_EDGE_EDGEDATA
hotkey for mode adding edges AND edgeDatas
@ MID_GNE_DATAVIEWOPTIONS_TAZRELONLYFROM
toggle draw TAZRel only from
@ MID_GNE_EDGE_ADD_REVERSE
add reverse edge
@ MID_GNE_EDGE_APPLYTEMPLATE
apply template
@ MID_GNE_EDGE_USEASTEMPLATE
use edge as tempalte
@ MID_GNE_NETWORKVIEWOPTIONS_TOGGLEDRAWJUNCTIONSHAPE
toggle draw junction shape
@ MID_GNE_SHAPEEDITED_SIMPLIFY
simplify shape edited geometry
@ MID_GNE_DEMANDVIEWOPTIONS_DRAWSPREADVEHICLES
Draw vehicles in begin position or spread in lane.
@ MID_GNE_LANE_ADD_SIDEWALK
add sidewalk
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWOVERLAPPEDROUTES
show overlapped routes
@ MID_GNE_SHAPEEDITED_FINISH
finish editing shape edited
@ MID_GNE_RESET_GEOMETRYPOINT
reset geometry point
@ MID_GNE_CONNECTION_EDIT_SHAPE
edit connection shape
@ MID_GNE_SHAPEEDITED_CLOSE
close opened shape edited
@ MID_GNE_POI_ATTACH
attach POI to lane
@ MID_GNE_INTERVALBAR_DATASET
data set selected
@ MID_HOTKEY_SHIFT_T_LOCATETLS
Locate TLS - button.
@ MID_GNE_LANE_TRANSFORM_SIDEWALK
transform lane to sidewalk
@ MID_GNE_SHAPEEDITED_SET_FIRST_POINT
Set a vertex of shape edited as first vertex.
@ MID_GNE_LANE_ADD_BIKE
add bikelane
@ MID_HOTKEY_M_MODE_MOVE_MEANDATA
hotkey for mode moving element AND mean data
@ MID_HOTKEY_F2_SUPERMODE_NETWORK
select network supermode in netedit
@ MID_GNE_DEMANDVIEWOPTIONS_LOCKCONTAINER
lock container
@ MID_GNE_NETWORKVIEWOPTIONS_SELECTEDGES
select edges
@ MID_GNE_EDGE_SPLIT
split an edge
@ MID_GNE_LANE_TRANSFORM_GREENVERGE
transform lane to greenVerge
@ MID_GNE_CUSTOM_GEOMETRYPOINT
set custom geometry point
@ MID_GNE_POI_TRANSFORM_POIGEO
Transform to POI Geo.
@ MID_GNE_POI_RELEASE
release POI from lane
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWTRIPS
show all trips
@ MID_GNE_NETWORKVIEWOPTIONS_TOGGLEGRID
show grid
@ MID_GNE_INTERVALBAR_LIMITED
enable/disable show data elements by interval
@ MID_GNE_EDGE_EDIT_ENDPOINT
change default geometry endpoints
@ MID_GNE_POLYGON_DELETE_GEOMETRY_POINT
delete geometry point
@ MID_HOTKEY_P_MODE_POLYGON_PERSON
hotkey for mode creating polygons
@ MID_GNE_JUNCTION_ADDJOINTLS
Add join TLS into junctions.
@ MID_GNE_CROSSING_EDIT_SHAPE
edit crossing shape
@ MID_GNE_POLYGON_OPEN
open closed polygon
@ MID_GNE_POI_TRANSFORM_POI
Transform to POI.
@ MID_GNE_POLYGON_SIMPLIFY_SHAPE
simplify polygon geometry
@ MID_REMOVESELECT
Remove from selected items - Menu Entry.
GUICompleteSchemeStorage gSchemeStorage
@ MOVEELEMENT
move element cursor
@ MOVEVIEW
move view cursor
@ SELECT_LANE
select lanecursor
@ DELETE_CURSOR
delete cursor
@ INSPECT_LANE
inspect lane cursor
#define GUIDesignButtonPopup
checkable button placed in popup (for example, locate buttons)
#define GUIDesignVerticalSeparator
vertical separator
@ GLO_TAZRELDATA
TAZ relation data.
@ GLO_WALKINGAREA
a walkingArea
@ GLO_TEMPORALSHAPE
temporal shape (used in netedit)
@ GLO_TESTELEMENT
test element (used in netedit)
@ GLO_CONNECTION
a connection
GUIViewObjectsHandler gViewObjectsHandler
GUIViewUpdater gViewUpdater
GUIPropertyScheme< RGBColor > GUIColorScheme
#define WRITE_WARNINGF(...)
#define WRITE_WARNING(msg)
const std::string invalid_return< std::string >::value
StringBijection< SUMOVehicleClass > SumoVehicleClassStrings(sumoVehicleClassStringInitializer, SVC_CUSTOM2, false)
long long int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
@ SVC_IGNORING
vehicles ignoring classes
@ SVC_BICYCLE
vehicle is a bicycle
@ SVC_BUS
vehicle is a bus
@ SVC_PEDESTRIAN
pedestrian
@ SUMO_TAG_EDGEREL
a relation between two edges
@ SUMO_TAG_TAZ
a traffic assignment zone
@ SUMO_TAG_TAZSINK
a sink within a district (connection road)
@ SUMO_TAG_POI
begin/end of the description of a Point of interest
@ SUMO_TAG_VEHICLE
description of a vehicle
@ GNE_TAG_FLOW_ROUTE
a flow definition using a route instead of a from-to edges route
@ SUMO_TAG_ROUTE_DISTRIBUTION
distribution of a route
@ GNE_TAG_POIGEO
Point of interest over view with GEO attributes.
@ SUMO_TAG_FLOW
a flow definition using from and to edges or a route
@ SUMO_TAG_CONNECTION
connectioon between two lanes
@ SUMO_TAG_JUNCTION
begin/end of the description of a junction
@ SUMO_TAG_CROSSING
crossing between edges for pedestrians
@ SUMO_TAG_POLY
begin/end of the description of a polygon
@ SUMO_TAG_LANE
begin/end of the description of a single lane
@ GNE_TAG_POILANE
Point of interest over Lane.
@ GNE_TAG_JPS_OBSTACLE
polygon used for draw juPedSim obstacles
@ SUMO_TAG_TAZREL
a relation between two TAZs
@ SUMO_TAG_TAZSOURCE
a source within a district (connection road)
@ GNE_TAG_ROUTE_EMBEDDED
embedded route
@ SUMO_TAG_INDUCTION_LOOP
alternative tag for e1 detector
@ GNE_TAG_JPS_WALKABLEAREA
polygon used for draw juPedSim walkable areas
@ SUMO_TAG_TRIP
a single trip definition (used by router)
@ SUMO_TAG_EDGE
begin/end of the description of an edge
@ GNE_ATTR_OPPOSITE
to busStop (used by personPlans)
@ GNE_ATTR_SELECTED
element is selected
@ SUMO_ATTR_CUSTOMSHAPE
whether a given shape is user-defined
@ SUMO_ATTR_SHAPE
edge: the shape in xml-definition
@ GNE_ATTR_SHAPE_END
last coordinate of edge shape
@ SUMO_ATTR_TLID
link,node: the traffic light id responsible for this link
@ GNE_ATTR_SHAPE_START
first coordinate of edge shape
const double SUMO_const_laneWidth
const unsigned char TLS[]
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
void parseSumoBaseObject(CommonXMLStructure::SumoBaseObject *obj)
parse SumoBaseObject (it's called recursivelly)
A class that stores a 2D geometrical boundary.
void add(double x, double y, double z=0)
Makes the boundary include the given coordinate.
double ymin() const
Returns minimum y-coordinate.
double xmin() const
Returns minimum x-coordinate.
Boundary & grow(double by)
extends the boundary by the given amount
double ymax() const
Returns maximum y-coordinate.
double xmax() const
Returns maximum x-coordinate.
void addBoolAttribute(const SumoXMLAttr attr, const bool value)
add bool attribute into current SumoBaseObject node
void addDoubleAttribute(const SumoXMLAttr attr, const double value)
add double attribute into current SumoBaseObject node
void addStringAttribute(const SumoXMLAttr attr, const std::string &value)
add string attribute into current SumoBaseObject node
static void drawLine(const Position &beg, double rot, double visLength)
Draws a thin line.
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
static void drawOutlineCircle(double radius, double iRadius, int steps=8)
Draws an unfilled circle around (0,0).
static void drawFilledCircle(const double widradiusth, const int steps=8)
Draws a filled circle around (0,0).
static void popMatrix()
pop matrix
static void pushMatrix()
push matrix
virtual void openAdditionalDialog()
open Additional Dialog
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
const std::string getID() const override
get ID (all Attribute Carriers have one)
const std::string & getTagStr() const
get tag assigned to this object in string format
const std::string & getFilename() const
get filename in which save this AC
const GNETagProperties * getTagProperty() const
get tagProperty associated with this Attribute Carrier
virtual GUIGlObject * getGUIGlObject()=0
get GUIGlObject associated with this AttributeCarrier
static void changeAttribute(GNEAttributeCarrier *AC, SumoXMLAttr key, const std::string &value, GNEUndoList *undoList, const bool force=false)
change attribute
void smootShape()
smoothShape
void smooth(GNEUndoList *undoList)
make geometry smooth
void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList) override
NBEdge * getNBEdge() const
returns the internal NBEdge
void smoothElevation(GNEUndoList *undoList)
smooth elevation with regard to adjoining edges
std::vector< GNEEdge * > getOppositeEdges() const
get opposite edges
void copyTemplate(const GNEEdgeTemplate *edgeTemplate, GNEUndoList *undoList)
copy edge attributes from edgetemplate
void editEndpoint(Position pos, GNEUndoList *undoList)
makes pos the new geometry endpoint at the appropriate end, or remove current existent endpoint
Position getSplitPos(const Position &clickPos)
void straightenElevation(GNEUndoList *undoList)
interpolate z values linear between junctions
void resetEndpoint(const Position &pos, GNEUndoList *undoList)
restores the endpoint to the junction position at the appropriate end
const GNEHierarchicalContainerParents< GNEDemandElement * > & getParentDemandElements() const
get parent demand elements
const GNEHierarchicalContainerChildren< GNELane * > & getChildLanes() const
get child lanes
const GNEHierarchicalContainerParents< GNEJunction * > & getParentJunctions() const
get parent junctions
const std::vector< GNEEdge * > & getGNEIncomingEdges() const
Returns incoming GNEEdges.
std::string getAttribute(SumoXMLAttr key) const override
void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList) override
const std::vector< GNEEdge * > & getGNEOutgoingEdges() const
Returns incoming GNEEdges.
NBNode * getNBNode() const
Return net build node.
const PositionVector & getLaneShape() const
get elements shape
int getIndex() const
returns the index of the lane
void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList) override
GNEEdge * getParentEdge() const
get parent edge
A NBNetBuilder extended by visualisation and editing capabilities.
void requireRecompute()
inform the net about the need for recomputation
void initGNEConnections()
initialize GNEConnections
void closeShapeEdited(GNEUndoList *undoList)
close shape edited
void setFirstGeometryPointShapeEdited(const int index, GNEUndoList *undoList)
set first geometry point shape edited
void openShapeEdited(GNEUndoList *undoList)
open shape edited
int getGeometryPointUnderCursorShapeEdited() const
get index geometry point under cursor of shape edited
void simplifyShapeEdited(GNEUndoList *undoList)
simplify shape edited
void straigthenShapeEdited(GNEUndoList *undoList)
straighten shape edited
void deleteGeometryPointShapeEdited(const int index, GNEUndoList *undoList)
delete geometry point shape edited
void resetShapeEdited(GNEUndoList *undoList)
reset shape edited
int getVertexIndex(Position pos, bool snapToGrid)
return index of a vertex of shape, or of a new vertex if position is over an shape's edge
void closePolygon(bool allowUndo=true)
close polygon
void changeFirstGeometryPoint(int oldIndex, bool allowUndo=true)
change first geometry point
void deleteGeometryPoint(const Position &pos, bool allowUndo=true)
delete the geometry point closest to the given pos
CommonXMLStructure::SumoBaseObject * getSumoBaseObject() const
get SUMOBaseObject with all polygon attributes
void simplifyShape(bool allowUndo=true)
replace the current shape with a rectangle
void openPolygon(bool allowUndo=true)
open polygon
static void addReverse(GNEDemandElement *element)
add reverse for given demand element
static void reverse(GNEDemandElement *element)
reverse given demand element
bool isContainer() const
return true if tag correspond to a container element
bool isPlacedInRTree() const
return true if Tag correspond to an element that has to be placed in RTREE
SumoXMLTag getTag() const
get Tag vinculated with this attribute Property
bool hasDialog() const
return true if tag correspond to an element that can be edited using a dialog
bool isAdditionalElement() const
return true if tag correspond to an additional element (note: this include TAZ, shapes and wires)
bool isPerson() const
return true if tag correspond to a person element
class used for group inspected elements
class used to group all variables related to interval bar
class used for group front elements
class used to group all variables related with objects under cursor after a click over view
GNEViewNetHelper::EditNetworkElementShapes myEditNetworkElementShapes
struct for grouping all variables related with edit shapes
long onCmdToggleShowDemandElementsNetwork(FXObject *, FXSelector, void *)
toggle show demand elements (network)
long onMouseMove(FXObject *, FXSelector, void *) override
called when user moves mouse
void openObjectDialogAtCursor(const FXEvent *ev) override
open object dialog
long onCmdClosePolygon(FXObject *, FXSelector, void *)
close opened polygon
bool isCurrentlyMovingElements() const
check if an element is being moved
long onCmdEditCrossingShape(FXObject *, FXSelector, void *)
edit crossing shape
void processMoveMouseNetwork(const bool mouseLeftButtonPressed)
process move mouse function in Supermode Network
const GNEViewNetHelper::DataViewOptions & getDataViewOptions() const
get data view options
GNENet * getNet() const
get the net object
long onCmdSetFirstGeometryPoint(FXObject *, FXSelector, void *)
set as first geometry point the closes geometry point
long onCmdEdgeUseAsTemplate(FXObject *, FXSelector, void *)
use edge as template
long onCmdSmoothConnectionShape(FXObject *, FXSelector, void *)
edit connection shape
GNEViewNetHelper::CommonCheckableButtons myCommonCheckableButtons
variable used to save checkable buttons for common supermodes
void hotkeyBackSpace()
handle backspace keypress
GNEViewNetHelper::MarkFrontElements myMarkFrontElements
front element
GNEDemandElement * myLastCreatedRoute
last created route
const GNEViewNetHelper::EditModes & getEditModes() const
get edit modes
long onCmdAddSelected(FXObject *, FXSelector, void *)
select AC under cursor
const GNEViewNetHelper::EditNetworkElementShapes & getEditNetworkElementShapes() const
get Edit Shape module
GNECrossing * getCrossingAtPopupPosition()
try to retrieve a crossing at popup position
std::vector< std::string > getPOIParamKeys() const override
return list of available POI parameters
void updateNetworkModeSpecificControls()
updates Network mode specific controls
long onCmdAddTLS(FXObject *, FXSelector, void *)
add TLS
long onCmdSmoothEdges(FXObject *, FXSelector, void *)
smooth geometry
long onCmdStraightenEdges(FXObject *, FXSelector, void *)
makes selected edges straight
const GNEViewNetHelper::MouseButtonKeyPressed & getMouseButtonKeyPressed() const
get Key Pressed module
void updateCursor()
update cursor after every click/key press/release
void updateDataModeSpecificControls()
updates Data mode specific controls
GNEEdge * getEdgeAtPopupPosition()
try to retrieve an edge at popup position
long onCmdToggleShowDemandElementsData(FXObject *, FXSelector, void *)
toggle show demand elements (data)
GNEViewNetHelper::EditModes myEditModes
variable used to save variables related with edit moves modes
long onCmdReplaceJunction(FXObject *, FXSelector, void *)
replace node by geometry
bool restrictLane(GNELane *lane, SUMOVehicleClass vclass)
restrict lane
long onCmdSplitJunction(FXObject *, FXSelector, void *)
split junction into multiple junctions
void drawGrid() const
draw grid and update grid button
void deleteDemandAttributeCarrier(const GNEAttributeCarrier *AC)
delete given demand attribute carriers
long onCmdClearConnections(FXObject *, FXSelector, void *)
clear junction connections
void abortOperation(bool clearSelection=true)
abort current edition operation
long onCmdToggleTAZDrawFill(FXObject *, FXSelector, void *)
toggle TAZdrawFill
long onCmdResetEndPoints(FXObject *, FXSelector, void *)
reset edge end points
void updateObjectsInPosition(const Position &pos)
update objects and boundaries in position
GNEViewNetHelper::TestingMode myTestingMode
variable used to save variables related with testing mode
GNEDemandElement * getLastCreatedRoute() const
get last created route
GNEViewNetHelper::InspectedElements & getInspectedElements()
get inspected elements
long onCmdToggleDrawSpreadVehicles(FXObject *, FXSelector, void *)
toggle draw vehicles in begin position or spread in lane
GNEPOI * getPOIAtPopupPosition()
try to retrieve a POILane at popup position
GNEViewNetHelper::SelectingArea mySelectingArea
variable used for grouping all variables related with selecting areas
GNENetworkElement * getShapeEditedAtPopupPosition()
try to retreive a edited shape at popup position
const GNEViewNetHelper::MoveSingleElementModul & getMoveSingleElementValues() const
get move single element values
long onCmdToggleShowConnections(FXObject *, FXSelector, void *)
toggle show connections
long onCmdLaneReachability(FXObject *, FXSelector sel, void *)
show lane reachability
long onCmdToggleShowTAZElements(FXObject *, FXSelector, void *)
toggle show TAZ elements
long onLeftBtnPress(FXObject *, FXSelector, void *) override
GNEViewNetHelper::VehicleOptions myVehicleOptions
variable used to save variables related with vehicle options
GNEViewNetHelper::NetworkCheckableButtons myNetworkCheckableButtons
variable used to save checkable buttons for Supermode Network
long onCmdCloseShapeEdited(FXObject *, FXSelector, void *)
close opened shape edited
bool myCreatedPopup
flag for mark if during this frame a popup was created (needed to avoid problems in linux with Cursor...
void openSelectDialogAtCursor(const std::vector< GUIGlObject * > &GLObjects)
open select dialog at cursor
long onCmdSimplifyShapeEdited(FXObject *, FXSelector, void *)
void processClick(void *eventData)
Auxiliary function used by onLeftBtnPress(...).
void buildViewToolBars(GUIGlChildWindow *v) override
builds the view toolbars
void drawNeteditAttributesReferences()
draw circle in testing mode (needed for grid)
long onCmdSimplifyShape(FXObject *, FXSelector, void *)
simply shape of current polygon
GNELane * getLaneAtPopupPosition()
try to retrieve a lane at popup position
GNEViewNetHelper::MouseButtonKeyPressed myMouseButtonKeyPressed
variable used to save key status after certain events
bool askMergeJunctions(const GNEJunction *movedJunction, const GNEJunction *targetJunction, bool &alreadyAsked)
ask merge junctions
GNEViewNetHelper::IntervalBar myIntervalBar
variable used to save IntervalBar
GNEViewParent * myViewParent
view parent
bool showJunctionAsBubbles() const
return true if junction must be showed as bubbles
bool changeAllPhases() const
change all phases
long onCmdEditJunctionShape(FXObject *, FXSelector, void *)
edit junction shape
long onCmdToggleMoveElevation(FXObject *, FXSelector, void *)
toggle move elevation
GNEWalkingArea * getWalkingAreaAtPopupPosition()
try to retrieve a walkingArea at popup position
long onCmdToggleShowAllPersonPlans(FXObject *, FXSelector, void *)
toggle show all person plans in super mode demand
long onLeftBtnRelease(FXObject *, FXSelector, void *) override
called when user releases mouse's left button
long onCmdOpenAdditionalDialog(FXObject *, FXSelector, void *)
open additional dialog
long onCmdToggleTAZRelOnlyTo(FXObject *, FXSelector, void *)
toggle TAZRez only to
long onCmdEgeApplyTemplate(FXObject *, FXSelector, void *)
apply template to edge
long onCmdSetNeteditView(FXObject *, FXSelector sel, void *)
called when a new view is set
const GNEViewNetHelper::NetworkViewOptions & getNetworkViewOptions() const
get network view options
void hotkeyFocusFrame()
handle focus frame keypress
long onCmdToggleChainEdges(FXObject *, FXSelector, void *)
toggle chain edges
GNEViewNetHelper::DemandViewOptions myDemandViewOptions
variable used to save variables related with view options in supermode Demand
void drawTemporalJunctionTLSLines() const
draw temporal Junction TLS Lines
long onCmdLaneOperation(FXObject *, FXSelector sel, void *)
add/remove/restrict lane
void processMoveMouseData(const bool mouseLeftButtonPressed)
process move mouse function in Supermode Data
GNEFrame * myCurrentFrame
the current frame
bool autoSelectNodes()
whether to autoselect nodes or to lanes
void drawTemporalRoundabout() const
draw temporal roundabout
void deleteDataAttributeCarrier(const GNEAttributeCarrier *AC)
delete data attribute carriers
long onCmdToggleLockContainer(FXObject *, FXSelector, void *)
toggle lock container in super mode demand
GNEUndoList * myUndoList
a reference to the undolist maintained in the application
GNEViewNetHelper::NetworkViewOptions myNetworkViewOptions
variable used to save variables related with view options in supermode Network
GUIGlID getToolTipID() override
returns the id of object under cursor to show their tooltip
long onCmdResetEdgeEndPoints(FXObject *, FXSelector, void *)
edit junction shape
void buildEditModeControls()
create edit mode buttons and elements
GNEViewNetHelper::MoveSingleElementModul myMoveSingleElement
modul used for moving single element
int getDrawingToggle() const
get draw toggle (used to avoid drawing junctions twice)
GNEViewNetHelper::DataCheckableButtons myDataCheckableButtons
variable used to save checkable buttons for Supermode Data
long onCmdToggleShowGrid(FXObject *, FXSelector, void *)
toggle show grid
void processLeftButtonPressDemand(void *eventData)
process left button press function in Supermode Demand
GNEDemandElement * getDemandElementAtPopupPosition()
try to retrieve a demand element at popup position
GNEViewNetHelper::TimeFormat myTimeFormat
variable used for grouping all variables related with switch time
long onLeaveConvertRoundabout(FXObject *, FXSelector, void *)
leave to convert junction to roundabout
GNEViewNetHelper::IntervalBar & getIntervalBar()
get interval bar
long onCmdEditLaneShape(FXObject *, FXSelector, void *)
edit lane shape
GNEViewNetHelper::MarkFrontElements & getMarkFrontElements()
get marked for drawing front elements
long onCmdToggleHideNonInspecteDemandElements(FXObject *, FXSelector, void *)
toggle hide non inspected demand elements
GNEViewParent * getViewParent() const
get the net object
long onCmdToggleDrawJunctionShape(FXObject *, FXSelector, void *)
toggle draw junction shape
bool checkOverLockedElement(const GUIGlObject *GLObject, const bool isSelected) const
check if given element is locked (used for drawing select and delete contour)
long onCmdStraightenShapeEdited(FXObject *, FXSelector, void *)
straight shape edited
long onCmdAddReversedEdge(FXObject *, FXSelector, void *)
add reversed edge
void processLeftButtonReleaseNetwork()
process left button release function in Supermode Network
long onCmdDeleteGeometryPointShapeEdited(FXObject *, FXSelector, void *)
delete the closes geometry point in shape edited
long onMiddleBtnPress(FXObject *, FXSelector, void *) override
called when user press mouse's left button
bool checkSelectEdges() const
check if select edges (toggle using button or shift)
long onCmdAddReversedEdgeDisconnected(FXObject *, FXSelector, void *)
add reversed edge disconnected
long onCmdIntervalBarGenericDataType(FXObject *, FXSelector, void *)
change generic data type in interval bar
long onCmdConvertRoundabout(FXObject *, FXSelector, void *)
convert junction to roundabout
long onCmdRemoveEdgeSelected(FXObject *, FXSelector, void *)
unselect Edge under cursor
long onCmdAddReverse(FXObject *, FXSelector, void *)
add a reverse demand element
long onCmdToggleShowShapes(FXObject *, FXSelector, void *)
toggle show shapes in super mode data
long onCmdToggleMergeAutomatically(FXObject *, FXSelector, void *)
toggle warn for merge
long onCmdOpenPolygon(FXObject *, FXSelector, void *)
open closed polygon
GNEViewNetHelper::InspectedElements myInspectedElements
inspected element
long onCmdSetCustomGeometryPoint(FXObject *, FXSelector, void *)
set custom geometry point
bool removeRestrictedLane(GNELane *lane, SUMOVehicleClass vclass)
remove restricted lane
long onCmdIntervalBarDataSet(FXObject *, FXSelector, void *)
change data set in interval bar
GNEViewNetHelper::SaveElements & getSaveElements()
get variable used to save elements
void processLeftButtonReleaseDemand()
process left button release function in Supermode Demand
const GNEViewNetHelper::TestingMode & getTestingMode() const
get testing mode
GNEUndoList * getUndoList() const
get the undoList object
void processLeftButtonPressData(void *eventData)
process left button press function in Supermode Data
long onCmdTransformPOI(FXObject *, FXSelector, void *)
transform to POI
void saveVisualizationSettings() const
GNEViewNetHelper::SaveElements mySaveElements
variable used for grouping all variables related with salve elements
const GNEViewNetHelper::MoveMultipleElementModul & getMoveMultipleElementValues() const
get move multiple element values
void deleteNetworkAttributeCarrier(const GNEAttributeCarrier *AC)
delete given network attribute carriers
GNEViewNetHelper::LockManager myLockManager
lock manager
long onCmdAddEdgeSelected(FXObject *, FXSelector, void *)
select Edge under cursor
long onCmdIntervalBarSetEnd(FXObject *, FXSelector, void *)
change end in interval bar
long onCmdTransformPOIGEO(FXObject *, FXSelector, void *)
transform to POIGEO
const GNEViewNetHelper::ViewObjectsSelector & getViewObjectsSelector() const
get objects under cursor
void drawTemporalDrawingShape() const
draw temporal polygon shape in Polygon Mode
void setLastCreatedRoute(GNEDemandElement *lastCreatedRoute)
set last created route
void drawTestsCircle() const
draw circle in testing mode (needed for grid)
long onCmdSplitEdgeBidi(FXObject *, FXSelector, void *)
split edge at cursor position
long onCmdAddJoinTLS(FXObject *, FXSelector, void *)
add Join TLS
GNEJunction * getJunctionAtPopupPosition()
try to retrieve a junction at popup position
void drawTemporalSplitJunction() const
draw temporal split junction in create edge mode
long onCmdSetSupermode(FXObject *, FXSelector sel, void *)
long onCmdToggleExtendSelection(FXObject *, FXSelector, void *)
toggle extend selection
long onCmdTriangulatePolygon(FXObject *, FXSelector, void *)
triangulate polygon
long onKeyPress(FXObject *o, FXSelector sel, void *data) override
called when user press a key
GNEViewNetHelper::DemandCheckableButtons myDemandCheckableButtons
variable used to save checkable buttons for Supermode Demand
bool aksChangeSupermode(const std::string &operation, Supermode expectedSupermode)
ask about change supermode
GNETAZ * getTAZAtPopupPosition()
try to retrieve a TAZ at popup position
long onCmdSetMode(FXObject *, FXSelector sel, void *)
called when user press a mode button (Network or demand)
long onCmdResetEdgeEndpoint(FXObject *, FXSelector, void *)
change geometry endpoint
long onCmdIntervalBarSetBegin(FXObject *, FXSelector, void *)
change begin in interval bar
long onCmdResetLength(FXObject *, FXSelector, void *)
reset custom edge lengths
std::vector< std::string > getEdgeLaneParamKeys(bool edgeKeys) const override
return list of available edge parameters
long onCmdSelectPolygonElements(FXObject *, FXSelector, void *)
select elements within polygon boundary
long onCmdSetFirstGeometryPointShapeEdited(FXObject *, FXSelector, void *)
set first geometry point in shape edited
long onCmdRemoveSelected(FXObject *, FXSelector, void *)
unselect AC under cursor
long onCmdDeleteGeometryPoint(FXObject *, FXSelector, void *)
delete the closes geometry point
void doInit() override
called after some features are already initialized
long onCmdDuplicateLane(FXObject *, FXSelector, void *)
duplicate selected lane
long onRightBtnRelease(FXObject *, FXSelector, void *) override
called when user releases mouse's right button
void processLeftButtonPressNetwork(void *eventData)
mouse process functions
void hotkeyEnter()
handle enter keypress
GNEConnection * getConnectionAtPopupPosition()
try to retrieve a connection at popup position
long onCmdOpenShapeEdited(FXObject *, FXSelector, void *)
open closed shape edited
long onRightBtnPress(FXObject *, FXSelector, void *) override
called when user press mouse's right button
void recalculateBoundaries() override
recalculate boundaries
void buildColorRainbow(const GUIVisualizationSettings &s, GUIColorScheme &scheme, int active, GUIGlObjectType objectType, const GUIVisualizationRainbowSettings &rs) override
recalibrate color scheme according to the current value range
long onCmdToggleShowOverlappedRoutes(FXObject *, FXSelector, void *)
toggle hide non inspected demand elements
long onCmdToggleAutoOppositeEdge(FXObject *, FXSelector, void *)
toggle autoOpposite edge
long onCmdSplitEdge(FXObject *, FXSelector, void *)
split edge at cursor position
GNEViewNetHelper::LockManager & getLockManager()
get lock manager
long onCmdStraightenEdgesElevation(FXObject *, FXSelector, void *)
interpolate z values linear between junctions
void updateControls()
update control contents after undo/redo or recompute
GNEViewNetHelper::MoveMultipleElementModul myMoveMultipleElements
modul used for moving multiple elements
long onCmdSplitJunctionReconnect(FXObject *, FXSelector, void *)
split junction into multiple junctions and reconnect them
long onCmdFinishShapeEdited(FXObject *, FXSelector, void *)
finish shape edited
void hotkeyDel()
handle del keypress
long onCmdToggleChangeAllPhases(FXObject *, FXSelector, void *)
toggle change all phases
long onEnterConvertRoundabout(FXObject *, FXSelector, void *)
enter to convert junction to roundabout
bool myDrawPreviewRoundabout
draw preview roundabout
void redrawPathElementContours()
redraw elements only for calculating boundary
GNEViewNet()
FOX needs this.
long onCmdToggleTAZRelDrawing(FXObject *, FXSelector, void *)
toggle TAZRel drawing
long onCmdToggleShowJunctionBubbles(FXObject *, FXSelector, void *)
toggle show junction bubbles
bool selectingDetectorsTLSMode() const
check if we're selecting detectors in TLS mode
bool selectingJunctionsTLSMode() const
check if we're selecting junctions in TLS mode
long onCmdToggleShowAdditionalSubElements(FXObject *, FXSelector, void *)
toggle show additional sub-elements
long onCmdSmoothEdgesElevation(FXObject *, FXSelector, void *)
smooth elevation with regard to adjoining edges
long onCmdToggleShowAllContainerPlans(FXObject *, FXSelector, void *)
toggle show all container plans in super mode demand
GNEViewNetHelper::VehicleTypeOptions myVehicleTypeOptions
variable used to save variables related with vehicle type options
long onCmdResetJunctionShape(FXObject *, FXSelector, void *)
reset junction shape
long onCmdToggleTAZRelOnlyFrom(FXObject *, FXSelector, void *)
toggle TAZRez only from
long onCmdResetShapeEdited(FXObject *, FXSelector, void *)
reset shape edited
long onKeyRelease(FXObject *o, FXSelector sel, void *data) override
called when user release a key
long onCmdIntervalBarSetParameter(FXObject *, FXSelector, void *)
change parameter in interval bar
void drawTemporalE1TLSLines() const
draw temporal E1 TLS Lines
int doPaintGL(int mode, const Boundary &drawingBoundary) override
do paintGL
long onCmdReverseEdge(FXObject *, FXSelector, void *)
reverse edge
bool setColorScheme(const std::string &name) override
set color scheme
void processLeftButtonReleaseData()
process left button release function in Supermode Data
std::vector< std::string > getEdgeDataAttrs() const override
return list of loaded edgeData attributes
long onCmdToggleShowAdditionals(FXObject *, FXSelector, void *)
toggle show additionals in super mode data
long onCmdToggleLockPerson(FXObject *, FXSelector, void *)
toggle lock person in super mode demand
GNEViewNetHelper::TimeFormat & getTimeFormat()
get variable used to switch between time formats
GNENet * myNet
Pointer to current net. (We are not responsible for deletion).
GNEPoly * getPolygonAtPopupPosition()
try to retrieve a polygon at popup position
long onMiddleBtnRelease(FXObject *, FXSelector, void *) override
called when user releases mouse's left button
long onCmdToggleSelectEdges(FXObject *, FXSelector, void *)
toggle select edges
GNEViewNetHelper::DataViewOptions myDataViewOptions
variable used to save variables related with view options in supermode Data
int myDrawingToggle
drawin toggle (used in drawGLElements to avoid draw elements twice)
long onCmdToggleShowTrips(FXObject *, FXSelector, void *)
toggle show all trips in super mode demand
long onCmdToggleHideShapes(FXObject *, FXSelector, void *)
toggle hide shapes in super mode demand
long onCmdEditEdgeEndpoint(FXObject *, FXSelector, void *)
change geometry endpoint
const GNEViewNetHelper::DemandViewOptions & getDemandViewOptions() const
get demand view options
long onCmdToggleHideConnections(FXObject *, FXSelector, void *)
toggle hide connections
void openDeleteDialogAtCursor(const std::vector< GUIGlObject * > &GLObjects)
open delete dialog at cursor
long onCmdResetConnections(FXObject *, FXSelector, void *)
reset junction connections
long onCmdResetLaneCustomShape(FXObject *, FXSelector, void *)
reset custom shapes of selected lanes
bool addRestrictedLane(GNELane *lane, SUMOVehicleClass vclass, const bool insertAtFront)
add restricted lane
void setStatusBarText(const std::string &text)
set statusBar text
long onCmdEditWalkingAreaShape(FXObject *, FXSelector, void *)
edit walkingArea shape
void processMoveMouseDemand(const bool mouseLeftButtonPressed)
process move mouse function in Supermode Demand
long onCmdReleasePOI(FXObject *, FXSelector, void *)
release POI from lane
long onCmdResetOppositeLane(FXObject *, FXSelector, void *)
reset oppositeLane of current lane
void setSelectorFrameScale(double selectionScale)
set selection scaling (in GNESelectorFrame)
void viewUpdated()
called when view is updated
long onCmdEditConnectionShape(FXObject *, FXSelector, void *)
edit connection shape
void updateObjectsInShape(const PositionVector &shape)
get objects in the given shape (using triangulation)
void updateDemandModeSpecificControls()
updates Demand mode specific controls
void forceSupemodeNetwork()
force supermode network(used after load/create new network)
long onCmdAttachPOI(FXObject *, FXSelector, void *)
attach POI in lane
std::vector< std::string > getRelDataAttrs() const override
return list of loaded edgeRelation and tazRelation attributes
GNEAdditional * getAdditionalAtPopupPosition()
try to retrieve a additional at popup position
long onCmdReverse(FXObject *, FXSelector, void *)
reverse current demand element
void drawTemporalJunction() const
draw temporal junction in create edge mode
long onCmdSelectRoundabout(FXObject *, FXSelector, void *)
select all roundabout nodes and edges
void updateViewNet(const bool ignoreViewUpdater=true) const
Mark the entire GNEViewNet to be repainted later.
int drawGLElements(const Boundary &bound)
draw functions
long onCmdIntervalBarLimit(FXObject *, FXSelector, void *)
change limit interval in interval bar
GNEViewNetHelper::ViewObjectsSelector myViewObjectsSelector
variable use to select objects in view
A single child window which contains a view of the simulation area.
Dialog for edit rerouter intervals.
static FXCursor * getCursor(GUICursor which)
returns a cursor previously defined in the enum GUICursor
static void drawGeometry(const GUIVisualizationSettings::Detail d, const GUIGeometry &geometry, const double width, double offset=0)
draw geometry
static void drawChildLine(const GUIVisualizationSettings &s, const Position &child, const Position &parent, const RGBColor &color, const bool drawEntire, const double lineWidth)
draw line between child and parent (used in netedit)
void updateGeometry(const PositionVector &shape)
update entire geometry
MFXComboBoxIcon * getColoringSchemesCombo()
return combobox with the current coloring schemes (standard, fastest standard, real world....
FXPopup * getLocatorPopup()
@ brief return a pointer to locator popup
const std::string & getMicrosimID() const
Returns the id of the object as known to microsim.
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
const std::string & getName() const
int addColor(const T &color, const double threshold, const std::string &name="")
bool myAmInitialised
Internal information whether doInit() was called.
Position snapToActiveGrid(const Position &pos, bool snapXY=true) const
Returns a position that is mapped to the closest grid point if the grid is active.
std::vector< GUIGlObject * > myCurrentObjectsDialog
vector with current objects dialog
GUISUMOAbstractView(FXComposite *p, GUIMainWindow &app, GUIGlChildWindow *parent, const SUMORTree &grid, FXGLVisual *glVis, FXGLCanvas *share)
constructor
virtual long onLeftBtnRelease(FXObject *, FXSelector, void *)
const SUMORTree * myGrid
The visualization speed-up.
void openObjectDialog(const std::vector< GUIGlObject * > &objects, const bool filter=true)
open object dialog for the given object
void paintGLGrid() const
paints a grid
FXbool makeCurrent()
A reimplementation due to some internal reasons.
Position myClickedPopupPosition
clicked poup position
void buildMinMaxRainbow(const GUIVisualizationSettings &s, GUIColorScheme &scheme, const GUIVisualizationRainbowSettings &rs, double minValue, double maxValue, bool hasMissingData)
helper function for buildColorRainbow
virtual long onMiddleBtnRelease(FXObject *, FXSelector, void *)
virtual long onMouseMove(FXObject *, FXSelector, void *)
bool myPanning
Panning flag.
GUIMainWindow * myApp
The application.
std::vector< GUIGlID > getObjectsInBoundary(Boundary bound)
returns the ids of all objects in the given boundary
const Position & getPopupPosition() const
get position of current popup
double m2p(double meter) const
meter-to-pixels conversion method
GUIVisualizationSettings * myVisualizationSettings
visualization settings
void destroyPopup()
destroys the popup
virtual long onKeyPress(FXObject *o, FXSelector sel, void *data)
keyboard functions
virtual long onMiddleBtnPress(FXObject *, FXSelector, void *)
virtual Position getPositionInformation() const
Returns the cursor's x/y position within the network.
virtual long onKeyRelease(FXObject *o, FXSelector sel, void *data)
GUIDialog_ViewSettings * myGUIDialogViewSettings
Visualization changer.
void drawDecals()
Draws the stored decals.
virtual long onRightBtnRelease(FXObject *, FXSelector, void *)
GUIPerspectiveChanger * myChanger
The perspective changer.
GUIGLObjectPopupMenu * myPopup
The current popup-menu.
virtual long onPaint(FXObject *, FXSelector, void *)
virtual long onRightBtnPress(FXObject *, FXSelector, void *)
void openPopupDialog()
open popup dialog
static void resetTextures()
Reset textures.
Stores the information about how to visualize structures.
static const double MISSING_DATA
static const std::string SCHEME_NAME_PERMISSION_CODE
static const GeoConvHelper & getFinal()
the coordinate transformation for writing the location element and for tracking the original coordina...
void cartesian2geo(Position &cartesian) const
Converts the given cartesian (shifted) position to its geo (lat/long) representation.
long setCurrentItem(const FXint index, FXbool notify=FALSE)
Set the current item (index is zero-based).
FXint getNumItems() const
Return the number of items in the list.
FXint appendIconItem(const FXString &text, FXIcon *icon=nullptr, FXColor bgColor=FXRGB(255, 255, 255), void *ptr=nullptr)
append icon item in the last position
The representation of a single edge during network building.
const PositionVector & getGeometry() const
Returns the geometry of the edge.
const PositionVector getInnerGeometry() const
Returns the geometry of the edge without the endpoints.
const std::set< NBTrafficLightDefinition * > & getControllingTLS() const
Returns the traffic lights that were assigned to this node (The set of tls that control this node).
const PositionVector & getShape() const
retrieve the junction shape
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool).
static OptionsCont & getOptions()
Retrieves the options.
Static storage of an output device and its base (abstract) implementation.
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
void close()
Closes the device and removes it from the dictionary.
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
bool closeTag(const std::string &comment="")
Closes the most recently opened tag and optionally adds a comment.
static OutputDevice & getDevice(const std::string &name, bool usePrefix=true)
Returns the described OutputDevice.
C++ TraCI client API implementation.
A point in 2D or 3D with translation and scaling methods.
double distanceTo(const Position &p2) const
returns the euclidean distance in 3 dimensions
double distanceSquaredTo(const Position &p2) const
returns the square of the distance to another position
double x() const
Returns the x-position.
double y() const
Returns the y-position.
Position positionAtOffset(double pos, double lateralOffset=0) const
Returns the position at the given length.
double nearest_offset_to_point2D(const Position &p, bool perpendicular=true) const
return the nearest offest to point 2D
int indexOfClosest(const Position &p, bool twoD=false) const
void move2side(double amount, double maxExtension=100)
move position vector to side using certain amount
void setAlpha(unsigned char alpha)
Sets a new alpha value.
static const RGBColor BLUE
static const RGBColor ORANGE
static const RGBColor GREEN
static RGBColor fromHSV(double h, double s, double v)
Converts the given hsv-triplet to rgb, inspired by http://alvyray.com/Papers/CG/hsv2rgb....
static const RGBColor BLACK
static const RGBColor RED
named colors
const PositionVector & getShape() const
Returns the shape of the polygon.
static std::vector< Triangle > triangulate(PositionVector shape)
struct used to group all variables related to view options in supermode Data
struct used to group all variables related to view options in supermode Demand
struct used to group all variables related with Supermodes
struct used to group all variables related with edit shapes of NetworkElements
struct used to group all variables related with movement of groups of elements
struct used to group all variables related with movement of single elements
struct used to group all variables related to view options in supermode Network
struct used to group all variables related with save elements
struct used to group all variables related with testing