GNEChange_Shape::~GNEChange_Shape() { assert(myShape); myShape->decRef("GNEChange_Shape"); if (myShape->unreferenced()) { // make sure that shape are removed of ShapeContainer (net) AND grid if (myNet->retrievePolygon(myShape->getID(), false) != nullptr) { // show extra information for tests WRITE_DEBUG("Removing " + myShape->getTagStr() + " '" + myShape->getID() + "' from net in ~GNEChange_Shape()"); // all polygons are placed in RTREE myNet->removeGLObjectFromGrid(dynamic_cast<GUIGlObject*>(myShape)); // remove polygon from container myNet->myPolygons.remove(myShape->getID(), false); } else if (myNet->retrievePOI(myShape->getID(), false) != nullptr) { // show extra information for tests WRITE_DEBUG("Removing " + myShape->getTagStr() + " '" + myShape->getID() + "' from net in ~GNEChange_Shape()"); // only certain POIS are placed in RTREE if (myShape->getTagProperty().isPlacedInRTree()) { myNet->removeGLObjectFromGrid(dynamic_cast<GUIGlObject*>(myShape)); } // remove POI from container myNet->myPOIs.remove(myShape->getID(), false); } // show extra information for tests WRITE_DEBUG("delete " + myShape->getTagStr() + " '" + myShape->getID() + "' in ~GNEChange_Shape()"); delete myShape; } }
long GNEVehicleFrame::VTypeSelector::onCmdSelectVType(FXObject*, FXSelector, void*) { // get list of VTypes const auto& vTypes = myVehicleFrameParent->getViewNet()->getNet()->getDemandElementByType(SUMO_TAG_VTYPE); // Check if value of myTypeMatchBox correspond to a VType for (const auto& i : vTypes) { if (i.first == myTypeMatchBox->getText().text()) { // set color of myTypeMatchBox to black (valid) myTypeMatchBox->setTextColor(FXRGB(0, 0, 0)); // Set new current VType myCurrentVehicleType = i.second; // show vehicle attributes modul myVehicleFrameParent->myVehicleAttributes->showAttributesCreatorModul(myVehicleFrameParent->myItemSelector->getCurrentTagProperties()); // show help creation myVehicleFrameParent->myHelpCreation->showHelpCreation(); // Write Warning in console if we're in testing mode WRITE_DEBUG(("Selected item '" + myTypeMatchBox->getText() + "' in VTypeSelector").text()); return 1; } } // if VType selecte is invalid, select myCurrentVehicleType = nullptr; // hide all moduls if selected item isn't valid myVehicleFrameParent->myVehicleAttributes->hideAttributesCreatorModul(); // hide help creation myVehicleFrameParent->myHelpCreation->hideHelpCreation(); // set color of myTypeMatchBox to red (invalid) myTypeMatchBox->setTextColor(FXRGB(255, 0, 0)); // Write Warning in console if we're in testing mode WRITE_DEBUG("Selected invalid item in VTypeSelector"); return 1; }
static PyObject * acquire_fork(PyObject *self) { (void)self; WRITE_DEBUG("acquire_fork before"); if (!_acquire_fork()) { PyErr_SetString(PyExc_RuntimeError, "Acquire fork already in progress"); return NULL; } WRITE_DEBUG("acquire_fork acquired"); Py_RETURN_NONE; }
GNEChange_Lane::~GNEChange_Lane() { assert(myEdge); myEdge->decRef("GNEChange_Lane"); if (myEdge->unreferenced()) { // show extra information for tests WRITE_DEBUG("Deleting unreferenced " + myEdge->getTagStr() + " '" + myEdge->getID() + "' in GNEChange_Lane"); delete myEdge; } if (myLane) { myLane->decRef("GNEChange_Lane"); if (myLane->unreferenced()) { // show extra information for tests WRITE_DEBUG("Deleting unreferenced " + myLane->getTagStr() + " '" + myLane->getID() + "' in GNEChange_Lane"); delete myLane; } } }
static PyObject * release_fork(PyObject *self) { (void)self; WRITE_DEBUG("release_fork"); if (!_release_fork()) { PyErr_SetString(PyExc_RuntimeError, "Fork is not locked"); return NULL; } Py_RETURN_NONE; }
void GNEChange_Lane::undo() { if (myForward) { // show extra information for tests if (myLane != nullptr) { WRITE_DEBUG("Removing " + myLane->getTagStr() + " '" + myLane->getID() + "' from " + toString(SUMO_TAG_EDGE)); } else { WRITE_DEBUG("Removing nullptr " + toString(SUMO_TAG_LANE) + " from " + toString(SUMO_TAG_EDGE)); } // remove lane from edge myEdge->removeLane(myLane, false); // Remove lane from parent elements for (const auto& i : myShapeParents) { i->removeLaneChild(myLane); } for (const auto& i : myAdditionalParents) { i->removeLaneChild(myLane); } for (const auto& i : myDemandElementParents) { i->removeLaneChild(myLane); } // Remove lane from child elements for (const auto& i : myShapeChilds) { i->removeLaneParent(myLane); } for (const auto& i : myAdditionalChilds) { i->removeLaneParent(myLane); } for (const auto& i : myDemandElementChilds) { i->removeLaneParent(myLane); } } else { // show extra information for tests if (myLane != nullptr) { WRITE_DEBUG("Adding " + myLane->getTagStr() + " '" + myLane->getID() + "' into " + toString(SUMO_TAG_EDGE)); } else { WRITE_DEBUG("Adding nullptr " + toString(SUMO_TAG_LANE) + " into " + toString(SUMO_TAG_EDGE)); } // add lane and their attributes to edge // (lane removal is reverted, no need to recompute connections) myEdge->addLane(myLane, myLaneAttrs, false); // add lane in parent elements for (const auto& i : myShapeParents) { i->addLaneChild(myLane); } for (const auto& i : myAdditionalParents) { i->addLaneChild(myLane); } for (const auto& i : myDemandElementParents) { i->addLaneChild(myLane); } // add lane in child elements for (const auto& i : myShapeChilds) { i->addLaneParent(myLane); } for (const auto& i : myAdditionalChilds) { i->addLaneParent(myLane); } for (const auto& i : myDemandElementChilds) { i->addLaneParent(myLane); } } // enable save netElements myNet->requiereSaveNet(true); }
void GNEChange_Shape::undo() { if (myForward) { // show extra information for tests WRITE_DEBUG("Removing " + myShape->getTagStr() + " '" + myShape->getID() + "' from viewNet"); // remove shape from net myNet->removeShape(myShape, false); // Remove element from parent elements for (const auto& i : myEdgeParents) { i->removeShapeChild(myShape); } for (const auto& i : myLaneParents) { i->removeShapeChild(myShape); } for (const auto& i : myShapeParents) { i->removeShapeChild(myShape); } for (const auto& i : myAdditionalParents) { i->removeShapeChild(myShape); } for (const auto& i : myDemandElementParents) { i->removeShapeChild(myShape); } // Remove element from child elements for (const auto& i : myEdgeChilds) { i->removeShapeParent(myShape); } for (const auto& i : myLaneChilds) { i->removeShapeParent(myShape); } for (const auto& i : myShapeChilds) { i->removeShapeParent(myShape); } for (const auto& i : myAdditionalChilds) { i->removeShapeParent(myShape); } for (const auto& i : myDemandElementChilds) { i->removeShapeParent(myShape); } } else { // show extra information for tests WRITE_DEBUG("Adding " + myShape->getTagStr() + " '" + myShape->getID() + "' into viewNet"); // Add shape in net myNet->insertShape(myShape, false); // add element in parent elements for (const auto& i : myEdgeParents) { i->addShapeChild(myShape); } for (const auto& i : myLaneParents) { i->addShapeChild(myShape); } for (const auto& i : myShapeParents) { i->addShapeChild(myShape); } for (const auto& i : myAdditionalParents) { i->addShapeChild(myShape); } for (const auto& i : myDemandElementParents) { i->addShapeChild(myShape); } // add element in child elements for (const auto& i : myEdgeChilds) { i->addShapeParent(myShape); } for (const auto& i : myLaneChilds) { i->addShapeParent(myShape); } for (const auto& i : myShapeChilds) { i->addShapeParent(myShape); } for (const auto& i : myAdditionalChilds) { i->addShapeParent(myShape); } for (const auto& i : myDemandElementChilds) { i->addShapeParent(myShape); } } }