100 myFrameParent(frameParent) {
103 case GNEAttributeCarrier::TagType::TAGTYPE_NETELEMENT:
104 setText(
"Net elements");
106 case GNEAttributeCarrier::TagType::TAGTYPE_ADDITIONAL:
107 setText(
"Additional elements");
109 case GNEAttributeCarrier::TagType::TAGTYPE_SHAPE:
110 setText(
"Shape elements");
112 case GNEAttributeCarrier::TagType::TAGTYPE_TAZ:
113 setText(
"TAZ elements");
115 case GNEAttributeCarrier::TagType::TAGTYPE_VEHICLE:
118 case GNEAttributeCarrier::TagType::TAGTYPE_STOP:
121 case GNEAttributeCarrier::TagType::TAGTYPE_PERSON:
124 case GNEAttributeCarrier::TagType::TAGTYPE_PERSONPLAN:
125 setText(
"Person plans");
127 myListOfTagTypes.push_back(std::make_pair(
"person trips", GNEAttributeCarrier::TagType::TAGTYPE_PERSONTRIP));
128 myListOfTagTypes.push_back(std::make_pair(
"walks", GNEAttributeCarrier::TagType::TAGTYPE_WALK));
129 myListOfTagTypes.push_back(std::make_pair(
"rides", GNEAttributeCarrier::TagType::TAGTYPE_RIDE));
130 myListOfTagTypes.push_back(std::make_pair(
"stops", GNEAttributeCarrier::TagType::TAGTYPE_PERSONSTOP));
132 case GNEAttributeCarrier::TagType::TAGTYPE_PERSONTRIP:
133 setText(
"Person trips");
135 case GNEAttributeCarrier::TagType::TAGTYPE_WALK:
138 case GNEAttributeCarrier::TagType::TAGTYPE_RIDE:
141 case GNEAttributeCarrier::TagType::TAGTYPE_PERSONSTOP:
142 setText(
"Person stops");
153 if (myListOfTagTypes.size() > 0) {
155 for (
const auto& i : myListOfTagTypes) {
156 myTagTypesMatchBox->appendItem(i.first.c_str());
159 myTagTypesMatchBox->setNumVisible((
int)myTagTypesMatchBox->getNumItems());
163 myTagTypesMatchBox->hide();
169 for (
const auto& i : myListOfTags) {
170 myTagsMatchBox->appendItem(
toString(i).c_str());
173 myTagsMatchBox->setNumVisible((
int)myTagsMatchBox->getNumItems());
196 return myCurrentTagProperties;
205 for (
int i = 0; i < (int)myTagsMatchBox->getNumItems(); i++) {
206 if (myTagsMatchBox->getItem(i).text() ==
toString(tagType)) {
207 myTagsMatchBox->setCurrentItem(i);
211 myTagsMatchBox->clearItems();
213 for (
const auto& j : myListOfTags) {
214 myTagsMatchBox->appendItem(
toString(j).c_str());
217 myTagsMatchBox->setNumVisible((
int)myTagsMatchBox->getNumItems());
221 myFrameParent->tagSelected();
230 for (
int i = 0; i < (int)myTagsMatchBox->getNumItems(); i++) {
231 if (myTagsMatchBox->getItem(i).text() ==
toString(newTag)) {
232 myTagsMatchBox->setCurrentItem(i);
238 myFrameParent->tagSelected();
245 onCmdSelectTag(0, 0, 0);
251 for (
const auto& i : myListOfTagTypes) {
252 if (i.first == myTagTypesMatchBox->getText().text()) {
254 myTagTypesMatchBox->setTextColor(FXRGB(0, 0, 0));
258 myTagsMatchBox->show();
259 myTagsMatchBox->clearItems();
261 for (
const auto& j : myListOfTags) {
262 myTagsMatchBox->appendItem(
toString(j).c_str());
265 myTagsMatchBox->setNumVisible((
int)myTagsMatchBox->getNumItems());
267 WRITE_DEBUG((
"Selected item '" + myTagsMatchBox->getText() +
"' in TagTypeSelector").text());
269 return onCmdSelectTag(
nullptr, 0,
nullptr);
273 myTagsMatchBox->hide();
275 myCurrentTagProperties = myInvalidTagProperty;
277 myFrameParent->tagSelected();
279 myTagTypesMatchBox->setTextColor(FXRGB(255, 0, 0));
281 WRITE_DEBUG(
"Selected invalid item in TagTypeSelector");
289 for (
const auto& i : myListOfTags) {
290 if (
toString(i) == myTagsMatchBox->getText().text()) {
292 myTagsMatchBox->setTextColor(FXRGB(0, 0, 0));
296 myFrameParent->tagSelected();
298 WRITE_DEBUG((
"Selected item '" + myTagsMatchBox->getText() +
"' in TagSelector").text());
303 myCurrentTagProperties = myInvalidTagProperty;
305 myFrameParent->tagSelected();
307 myTagsMatchBox->setTextColor(FXRGB(255, 0, 0));
309 WRITE_DEBUG(
"Selected invalid item in TagSelector");
319 myFrameParent(frameParent),
320 myCurrentDemandElement(nullptr),
321 myDemandElementTags({demandElementTag}) {
325 refreshDemandElementSelector();
333 myFrameParent(frameParent),
334 myCurrentDemandElement(nullptr) {
336 for (
const auto& i : tagTypes) {
354 return myCurrentDemandElement;
358 const std::vector<SumoXMLTag>&
360 return myDemandElementTags;
366 if (std::find(myDemandElementTags.begin(), myDemandElementTags.end(), demandElement->
getTagProperty().
getTag()) != myDemandElementTags.end()) {
368 myDemandElementsMatchBox->setText(demandElement->
getID().c_str());
370 myCurrentDemandElement = demandElement;
372 myFrameParent->demandElementSelected();
380 refreshDemandElementSelector();
382 if (myCurrentDemandElement) {
383 myDemandElementsMatchBox->setText(myCurrentDemandElement->getID().c_str());
384 }
else if (myDemandElementTags.size() == 1) {
391 onCmdSelectDemandElement(
nullptr, 0,
nullptr);
411 myDemandElementsMatchBox->clearItems();
413 for (
const auto& i : myDemandElementTags) {
420 for (
const auto& j : myFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(i)) {
423 myDemandElementsMatchBox->appendItem(j.first.c_str());
430 for (
const auto& j : myFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(i)) {
433 myDemandElementsMatchBox->appendItem(j.first.c_str());
438 for (
const auto& j : myFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(i)) {
439 myDemandElementsMatchBox->appendItem(j.first.c_str());
444 if (myDemandElementsMatchBox->getNumItems() < 10) {
445 myDemandElementsMatchBox->setNumVisible((
int)myDemandElementsMatchBox->getNumItems());
447 myDemandElementsMatchBox->setNumVisible(10);
450 if (myDemandElementsMatchBox->getNumItems() == 0) {
451 myCurrentDemandElement =
nullptr;
452 }
else if (myCurrentDemandElement) {
453 for (
int i = 0; i < myDemandElementsMatchBox->getNumItems(); i++) {
454 if (myDemandElementsMatchBox->getItem(i).text() == myCurrentDemandElement->getID()) {
455 myDemandElementsMatchBox->setCurrentItem(i, FALSE);
466 myCurrentDemandElement =
nullptr;
468 for (
auto i = myDemandElementTags.begin(); (i != myDemandElementTags.end()) && (myCurrentDemandElement ==
nullptr); i++) {
469 if (myFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(*i).size() > 0) {
470 myCurrentDemandElement = myFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(*i).begin()->second;
481 for (
const auto& i : myDemandElementTags) {
482 for (
const auto& j : myFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(i)) {
483 if (j.first == myDemandElementsMatchBox->getText().text()) {
485 myDemandElementsMatchBox->setTextColor(FXRGB(0, 0, 0));
487 myCurrentDemandElement = j.second;
489 myFrameParent->demandElementSelected();
491 WRITE_DEBUG((
"Selected item '" + myDemandElementsMatchBox->getText() +
"' in DemandElementSelector").text());
497 myCurrentDemandElement =
nullptr;
499 myFrameParent->demandElementSelected();
501 myDemandElementsMatchBox->setTextColor(FXRGB(255, 0, 0));
503 WRITE_DEBUG(
"Selected invalid item in DemandElementSelector");
513 myFrameParent(frameParent),
515 mySelectedBusStop(nullptr),
516 myEdgePathCreatorModes(edgePathCreatorModes) {
538 std::string nameWithFirstCapitalizedLetter = name;
539 nameWithFirstCapitalizedLetter[0] = (char)toupper(nameWithFirstCapitalizedLetter.at(0));
540 setText((nameWithFirstCapitalizedLetter +
" creator").c_str());
541 myFinishCreationButton->setText((
"Finish " + name +
" creation").c_str());
542 myAbortCreationButton->setText((
"Abort " + name +
" creation").c_str());
549 myFinishCreationButton->disable();
550 myAbortCreationButton->disable();
551 myRemoveLastInsertedEdge->disable();
560 for (
const auto& i : myClickedEdges) {
564 myClickedEdges.clear();
566 myTemporalRoute.clear();
580 myEdgePathCreatorModes = edgePathCreatorModes;
584 std::vector<GNEEdge*>
586 return myClickedEdges;
592 return mySelectedBusStop;
600 if (mySelectedBusStop !=
nullptr) {
603 myFrameParent->getViewNet()->setStatusBarText(
"Final " + mySelectedBusStop->getTagProperty().getTagStr() +
" selected");
605 WRITE_DEBUG(
"Final " + mySelectedBusStop->getTagProperty().getTagStr() +
" selected");
606 }
else if ((myClickedEdges.size() > 0) && (myClickedEdges.back() == edge)) {
610 myFrameParent->getViewNet()->setStatusBarText(
"Duplicated consecutive edges aren't allowed");
612 WRITE_DEBUG(
"Duplicated consecutive edges aren't allowed");
618 if ((i.permissions & myVClass) != 0) {
622 if (addEdge ==
false) {
624 myFrameParent->getViewNet()->setStatusBarText(
"Invalid edge permissions");
632 myClickedEdges.push_back(edge);
634 myAbortCreationButton->enable();
636 myFrameParent->myViewNet->getViewParent()->getGNEAppWindows()->disableUndoRedo(
"trip creation");
639 i->setSpecialColor(&myFrameParent->getEdgeCandidateSelectedColor());
642 myRemoveLastInsertedEdge->enable();
644 myFinishCreationButton->enable();
646 if (myClickedEdges.size() > 1) {
651 myTemporalRoute = myClickedEdges;
663 if (!myClickedEdges.empty() && (mySelectedBusStop ==
nullptr)) {
664 mySelectedBusStop = busStop;
665 mySelectedBusStop->
setSpecialColor(&myFrameParent->getEdgeCandidateSelectedColor());
674 for (
const auto& i : myClickedEdges) {
678 myClickedEdges.clear();
679 myTemporalRoute.clear();
681 if (mySelectedBusStop) {
682 mySelectedBusStop->setSpecialColor(
nullptr);
683 mySelectedBusStop =
nullptr;
686 myFrameParent->myViewNet->getViewParent()->getGNEAppWindows()->enableUndoRedo();
693 if (myClickedEdges.size() > 0) {
703 GLHelper::drawLine(myTemporalRoute.at(0)->getNBEdge()->getLanes().front().shape.front(),
704 myTemporalRoute.at(0)->getNBEdge()->getLanes().front().shape.back());
706 for (
int i = 1; i < (int)myTemporalRoute.size(); i++) {
707 GLHelper::drawLine(myTemporalRoute.at(i - 1)->getNBEdge()->getLanes().front().shape.back(),
708 myTemporalRoute.at(i)->getNBEdge()->getLanes().front().shape.front());
709 GLHelper::drawLine(myTemporalRoute.at(i)->getNBEdge()->getLanes().front().shape.front(),
710 myTemporalRoute.at(i)->getNBEdge()->getLanes().front().shape.back());
713 if (mySelectedBusStop) {
714 GLHelper::drawLine(myTemporalRoute.back()->getNBEdge()->getLanes().front().shape.back(),
715 mySelectedBusStop->getAdditionalGeometry().shape.getLineCenter());
725 if (myAbortCreationButton->isEnabled()) {
726 onCmdAbortRouteCreation(
nullptr, 0,
nullptr);
733 if (myFinishCreationButton->isEnabled()) {
734 onCmdFinishRouteCreation(
nullptr, 0,
nullptr);
741 if (myRemoveLastInsertedEdge->isEnabled()) {
742 onCmdRemoveLastInsertedElement(
nullptr, 0,
nullptr);
752 myAbortCreationButton->disable();
753 myFinishCreationButton->disable();
754 myRemoveLastInsertedEdge->disable();
762 if (myClickedEdges.size() > 0) {
764 myFrameParent->edgePathCreated();
766 myFrameParent->myViewNet->update();
770 myFinishCreationButton->disable();
771 myAbortCreationButton->disable();
772 myRemoveLastInsertedEdge->disable();
780 if (myClickedEdges.size() > 1) {
782 restoreEdgeColor(myClickedEdges.back());
784 myClickedEdges.pop_back();
788 myFrameParent->myViewNet->update();
790 if (myClickedEdges.size() == 1) {
792 myRemoveLastInsertedEdge->disable();
802 for (
const auto& i : edge->
getLanes()) {
803 i->setSpecialColor(
nullptr);
813 myFrameParent(frameParent),
815 myClickedAC(nullptr),
816 myClickedJunction(nullptr),
817 myClickedEdge(nullptr),
818 myClickedLane(nullptr),
819 myClickedCrossing(nullptr),
820 myClickedConnection(nullptr),
821 myClickedShape(nullptr),
822 myClickedAdditional(nullptr),
823 myClickedDemandElement(nullptr) {
839 refreshAttributeCarrierHierarchy();
848 myClickedAC =
nullptr;
849 myClickedJunction =
nullptr;
850 myClickedEdge =
nullptr;
851 myClickedLane =
nullptr;
852 myClickedCrossing =
nullptr;
853 myClickedConnection =
nullptr;
854 myClickedShape =
nullptr;
855 myClickedAdditional =
nullptr;
856 myClickedDemandElement =
nullptr;
865 myTreelist->clearItems();
866 myTreeItemToACMap.clear();
867 myTreeItemsConnections.clear();
870 showAttributeCarrierChildren(myAC, showAttributeCarrierParents());
878 FXEvent* e = (FXEvent*)eventData;
880 FXTreeItem* item = myTreelist->getItemAt(e->win_x, e->win_y);
882 if (item && (myTreeItemsConnections.find(item) == myTreeItemsConnections.end())) {
883 createPopUpMenu(e->root_x, e->root_y, myTreeItemToACMap[item]);
892 if (myClickedJunction) {
893 myFrameParent->myViewNet->centerTo(myClickedJunction->getGlID(),
true, -1);
894 }
else if (myClickedEdge) {
895 myFrameParent->myViewNet->centerTo(myClickedEdge->getGlID(),
true, -1);
896 }
else if (myClickedLane) {
897 myFrameParent->myViewNet->centerTo(myClickedLane->getGlID(),
true, -1);
898 }
else if (myClickedCrossing) {
899 myFrameParent->myViewNet->centerTo(myClickedCrossing->getGlID(),
true, -1);
900 }
else if (myClickedConnection) {
901 myFrameParent->myViewNet->centerTo(myClickedConnection->getGlID(),
true, -1);
902 }
else if (myClickedAdditional) {
903 myFrameParent->myViewNet->centerTo(myClickedAdditional->getGlID(),
true, -1);
904 }
else if (myClickedShape) {
905 myFrameParent->myViewNet->centerTo(myClickedShape->getGlID(),
true, -1);
906 }
else if (myClickedDemandElement) {
907 myFrameParent->myViewNet->centerTo(myClickedDemandElement->getGlID(),
true, -1);
910 myFrameParent->myViewNet->update();
917 if ((myAC !=
nullptr) && (myClickedAC !=
nullptr)) {
918 myFrameParent->myViewNet->getViewParent()->getInspectorFrame()->inspectChild(myClickedAC, myAC);
927 const std::vector<GNEAttributeCarrier*>& currentInspectedACs = myFrameParent->myViewNet->getViewParent()->getInspectorFrame()->getAttributesEditor()->getEditedACs();
929 if (myClickedJunction) {
930 myFrameParent->myViewNet->getNet()->deleteJunction(myClickedJunction, myFrameParent->myViewNet->getUndoList());
931 }
else if (myClickedEdge) {
932 myFrameParent->myViewNet->getNet()->deleteEdge(myClickedEdge, myFrameParent->myViewNet->getUndoList(),
false);
933 }
else if (myClickedLane) {
934 myFrameParent->myViewNet->getNet()->deleteLane(myClickedLane, myFrameParent->myViewNet->getUndoList(),
false);
935 }
else if (myClickedCrossing) {
936 myFrameParent->myViewNet->getNet()->deleteCrossing(myClickedCrossing, myFrameParent->myViewNet->getUndoList());
937 }
else if (myClickedConnection) {
938 myFrameParent->myViewNet->getNet()->deleteConnection(myClickedConnection, myFrameParent->myViewNet->getUndoList());
939 }
else if (myClickedAdditional) {
940 myFrameParent->myViewNet->getNet()->deleteAdditional(myClickedAdditional, myFrameParent->myViewNet->getUndoList());
941 }
else if (myClickedShape) {
942 myFrameParent->myViewNet->getNet()->deleteShape(myClickedShape, myFrameParent->myViewNet->getUndoList());
943 }
else if (myClickedDemandElement) {
945 if ((myClickedDemandElement->getTagProperty().getTag() ==
SUMO_TAG_VTYPE) && (GNEAttributeCarrier::parse<bool>(myClickedDemandElement->getAttribute(
GNE_ATTR_DEFAULT_VTYPE)))) {
949 myFrameParent->myViewNet->getNet()->deleteDemandElement(myClickedDemandElement, myFrameParent->myViewNet->getUndoList());
953 myFrameParent->myViewNet->update();
955 refreshAttributeCarrierHierarchy();
957 if (currentInspectedACs.size() == 1) {
958 if (currentInspectedACs.front() != myClickedAC) {
959 myFrameParent->myViewNet->getViewParent()->getInspectorFrame()->inspectSingleElement(currentInspectedACs.front());
962 myFrameParent->myViewNet->getViewParent()->getInspectorFrame()->inspectSingleElement(
nullptr);
972 if (myClickedDemandElement) {
973 myFrameParent->myViewNet->getUndoList()->p_begin((
"moving up " + myClickedDemandElement->getTagStr()).c_str());
975 myFrameParent->myViewNet->getUndoList()->add(
new GNEChange_Children(myClickedDemandElement->getDemandElementParents().at(0), myClickedDemandElement,
976 GNEChange_Children::Operation::MOVE_BACK),
true);
977 myFrameParent->myViewNet->getUndoList()->p_end();
980 refreshAttributeCarrierHierarchy();
988 if (myClickedDemandElement) {
989 myFrameParent->myViewNet->getUndoList()->p_begin((
"moving down " + myClickedDemandElement->getTagStr()).c_str());
991 myFrameParent->myViewNet->getUndoList()->add(
new GNEChange_Children(myClickedDemandElement->getDemandElementParents().at(0), myClickedDemandElement,
992 GNEChange_Children::Operation::MOVE_FRONT),
true);
993 myFrameParent->myViewNet->getUndoList()->p_end();
996 refreshAttributeCarrierHierarchy();
1006 myClickedAC = clickedAC;
1008 myClickedJunction = dynamic_cast<GNEJunction*>(clickedAC);
1009 myClickedEdge = dynamic_cast<GNEEdge*>(clickedAC);
1010 myClickedLane = dynamic_cast<GNELane*>(clickedAC);
1011 myClickedCrossing = dynamic_cast<GNECrossing*>(clickedAC);
1012 myClickedConnection = dynamic_cast<GNEConnection*>(clickedAC);
1013 myClickedShape = dynamic_cast<GNEShape*>(clickedAC);
1014 myClickedAdditional = dynamic_cast<GNEAdditional*>(clickedAC);
1015 myClickedDemandElement = dynamic_cast<GNEDemandElement*>(clickedAC);
1017 FXMenuPane* pane =
new FXMenuPane(myTreelist);
1019 new MFXMenuHeader(pane, myFrameParent->myViewNet->getViewParent()->getGUIMainWindow()->getBoldFont(), myClickedAC->getPopUpID().c_str(), myClickedAC->getIcon());
1021 new FXMenuSeparator(pane);
1025 if (myClickedAC->getTagProperty().isVehicleType()) {
1026 centerMenuCommand->disable();
1032 if ((myClickedAC->getTagProperty().isNetElement() && (myFrameParent->myViewNet->getEditModes().currentSupermode ==
GNE_SUPERMODE_DEMAND)) ||
1033 (myClickedAC->getTagProperty().isDemandElement() && (myFrameParent->myViewNet->getEditModes().currentSupermode ==
GNE_SUPERMODE_NETWORK))) {
1034 inspectMenuCommand->disable();
1035 deleteMenuCommand->disable();
1038 if (myClickedDemandElement && myClickedAC->getTagProperty().canBeSortedManually()) {
1040 new FXMenuSeparator(pane);
1045 if (myClickedDemandElement->getTagProperty().isPersonStop()) {
1046 moveUpMenuCommand->setText(
"Move up (Stops cannot be moved)");
1047 moveDownMenuCommand->setText(
"Move diwb (Stops cannot be moved)");
1048 moveUpMenuCommand->disable();
1049 moveDownMenuCommand->disable();
1052 if (myClickedDemandElement->getDemandElementParents().front()->getDemandElementChildren().front() == myClickedDemandElement) {
1053 moveUpMenuCommand->setText(
"Move up (It's already the first element)");
1054 moveUpMenuCommand->disable();
1055 }
else if (myClickedDemandElement->getDemandElementParents().front()->getPreviousemandElement(myClickedDemandElement)->getTagProperty().isPersonStop()) {
1056 moveUpMenuCommand->setText(
"Move up (Previous element is a Stop)");
1057 moveUpMenuCommand->disable();
1060 if (myClickedDemandElement->getDemandElementParents().front()->getDemandElementChildren().back() == myClickedDemandElement) {
1061 moveDownMenuCommand->setText(
"Move down (It's already the last element)");
1062 moveDownMenuCommand->disable();
1063 }
else if (myClickedDemandElement->getDemandElementParents().front()->getNextDemandElement(myClickedDemandElement)->getTagProperty().isPersonStop()) {
1064 moveDownMenuCommand->setText(
"Move down (Next element is a Stop)");
1065 moveDownMenuCommand->disable();
1076 myClickedAC =
nullptr;
1077 myClickedJunction =
nullptr;
1078 myClickedEdge =
nullptr;
1079 myClickedLane =
nullptr;
1080 myClickedCrossing =
nullptr;
1081 myClickedConnection =
nullptr;
1082 myClickedShape =
nullptr;
1083 myClickedAdditional =
nullptr;
1084 myClickedDemandElement =
nullptr;
1091 if (myAC->getTagProperty().isNetElement()) {
1093 switch (myAC->getTagProperty().getTag()) {
1101 junctionDestinyItem->setExpanded(
true);
1106 return junctionDestinyItem;
1120 junctionDestinyItem->setExpanded(
true);
1123 edgeItem->setExpanded(
true);
1127 myTreeItemToACMap[edgeItem] = edge;
1141 FXTreeItem* junctionItem = myTreelist->insertItem(
nullptr,
nullptr, junction->
getHierarchyName().c_str(), junction->
getIcon(), junction->
getIcon());
1142 junctionItem->setExpanded(
true);
1144 myTreeItemToACMap[junctionItem] = junction;
1146 return junctionItem;
1157 edgeFromItem->setExpanded(
true);
1160 edgeToItem->setExpanded(
true);
1162 FXTreeItem* connectionItem = myTreelist->insertItem(
nullptr, edgeToItem, connection->
getHierarchyName().c_str(), connection->
getIcon(), connection->
getIcon());
1163 connectionItem->setExpanded(
true);
1165 myTreeItemToACMap[edgeFromItem] = connection->
getEdgeFrom();
1166 myTreeItemToACMap[edgeToItem] = connection->
getEdgeTo();
1167 myTreeItemToACMap[connectionItem] = connection;
1169 return connectionItem;
1188 junctionDestinyItem->setExpanded(
true);
1191 edgeItem->setExpanded(
true);
1194 laneItem->setExpanded(
true);
1198 myTreeItemToACMap[edgeItem] = edge;
1199 myTreeItemToACMap[laneItem] = lane;
1205 }
else if (myAC->getTagProperty().isAdditional() || myAC->getTagProperty().isTAZ()) {
1210 FXTreeItem* root =
nullptr;
1247 addListItem(
nullptr, (
"..." +
toString((
int)additional->
getEdgeParents().size() - 2) +
" edges...").c_str(), 0,
false);
1261 addListItem(
nullptr, (
"..." +
toString((
int)additional->
getLaneParents().size() - 2) +
" lanes...").c_str(), 0,
false);
1270 }
else if (myAC->getTagProperty().isDemandElement()) {
1273 if (demandElement) {
1275 FXTreeItem* root =
nullptr;
1312 addListItem(
nullptr, (
"..." +
toString((
int)demandElement->
getEdgeParents().size() - 2) +
" edges...").c_str(), 0,
false);
1326 addListItem(
nullptr, (
"..." +
toString((
int)demandElement->
getLaneParents().size() - 2) +
" lanes...").c_str(), 0,
false);
1351 FXTreeItem* junctionItem = addListItem(AC, itemParent);
1354 showAttributeCarrierChildren(i, junctionItem);
1358 showAttributeCarrierChildren(i, junctionItem);
1368 FXTreeItem* edgeItem = addListItem(AC, itemParent);
1370 for (
const auto& i : edge->
getLanes()) {
1371 showAttributeCarrierChildren(i, edgeItem);
1375 showAttributeCarrierChildren(i, edgeItem);
1379 showAttributeCarrierChildren(i, edgeItem);
1383 showAttributeCarrierChildren(i, edgeItem);
1386 showAttributeCarrierChildren(i, edgeItem);
1389 showAttributeCarrierChildren(i, edgeItem);
1399 FXTreeItem* laneItem = addListItem(AC, itemParent);
1402 showAttributeCarrierChildren(i, laneItem);
1406 showAttributeCarrierChildren(i, laneItem);
1410 showAttributeCarrierChildren(i, laneItem);
1416 FXTreeItem* incomingConnections = addListItem(laneItem,
"Incomings", incomingLaneConnections.front()->getIcon(),
false);
1418 for (
auto i : incomingLaneConnections) {
1419 showAttributeCarrierChildren(i, incomingConnections);
1426 FXTreeItem* outgoingConnections = addListItem(laneItem,
"Outgoing", outcomingLaneConnections.front()->getIcon(),
false);
1428 for (
auto i : outcomingLaneConnections) {
1429 showAttributeCarrierChildren(i, outgoingConnections);
1438 addListItem(AC, itemParent);
1446 addListItem(AC, itemParent);
1452 FXTreeItem* additionalItem = addListItem(AC, itemParent);
1455 showAttributeCarrierChildren(i, additionalItem);
1459 showAttributeCarrierChildren(i, additionalItem);
1463 showAttributeCarrierChildren(i, additionalItem);
1467 showAttributeCarrierChildren(i, additionalItem);
1471 showAttributeCarrierChildren(i, additionalItem);
1477 if (demandElement) {
1479 FXTreeItem* demandElementItem = addListItem(AC, itemParent);
1482 showAttributeCarrierChildren(i, demandElementItem);
1486 showAttributeCarrierChildren(i, demandElementItem);
1490 showAttributeCarrierChildren(i, demandElementItem);
1494 showAttributeCarrierChildren(i, demandElementItem);
1498 showAttributeCarrierChildren(i, demandElementItem);
1510 myTreeItemToACMap[item] = AC;
1512 item->setExpanded(
true);
1521 FXTreeItem* item = myTreelist->insertItem(
nullptr, itemParent, text.c_str(), icon, icon);
1523 item->setExpanded(expanded);
1534 myFrameParent(frameParent),
1535 myDeleteLastCreatedPoint(false) {
1542 std::ostringstream information;
1544 <<
"- 'Start drawing' or ENTER\n"
1545 <<
" draws shape boundary.\n"
1546 <<
"- 'Stop drawing' or ENTER\n"
1547 <<
" creates shape.\n"
1548 <<
"- 'Shift + Click'\n"
1549 <<
" removes last created point.\n"
1550 <<
"- 'Abort drawing' or ESC\n"
1551 <<
" removes drawed shape.";
1583 myStartDrawingButton->disable();
1584 myStopDrawingButton->enable();
1585 myAbortDrawingButton->enable();
1593 if (myFrameParent->shapeDrawed()) {
1595 myTemporalShapeShape.clear();
1596 myFrameParent->myViewNet->update();
1598 myStartDrawingButton->enable();
1599 myStopDrawingButton->disable();
1600 myAbortDrawingButton->disable();
1611 myTemporalShapeShape.clear();
1612 myFrameParent->myViewNet->update();
1614 myStartDrawingButton->enable();
1615 myStopDrawingButton->disable();
1616 myAbortDrawingButton->disable();
1622 if (myStopDrawingButton->isEnabled()) {
1623 myTemporalShapeShape.push_back(P);
1625 throw ProcessError(
"A new point cannot be added if drawing wasn't started");
1638 return myTemporalShapeShape;
1644 return myStopDrawingButton->isEnabled();
1650 myDeleteLastCreatedPoint = value;
1656 return myDeleteLastCreatedPoint;
1686 myFrameParent(frameParent),
1702 for (
int i = 0; i < myParentsList->getNumItems(); i++) {
1703 if (myParentsList->isItemSelected(i)) {
1704 return myParentsList->getItem(i)->getText().text();
1714 for (
int i = 0; i < myParentsList->getNumItems(); i++) {
1715 myParentsList->getItem(i)->setSelected(
false);
1718 for (
int i = 0; i < myParentsList->getNumItems(); i++) {
1719 if (myParentsList->getItem(i)->getText().text() == id) {
1720 myParentsList->getItem(i)->setSelected(
true);
1724 myParentsList->recalc();
1732 for (
auto i : listOfTags) {
1733 if (i == additionalType) {
1734 myParentTag = additionalType;
1735 myParentsLabel->setText((
"Parent type: " +
toString(additionalType)).c_str());
1736 refreshSelectorParentModul();
1754 myParentsList->clearItems();
1757 for (
const auto& i : myFrameParent->getViewNet()->getNet()->getAttributeCarriers().additionals.at(myParentTag)) {
1758 myParentsList->appendItem(i.first.c_str());