Ejemplo n.º 1
0
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;
    }
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
        }
    }
}
Ejemplo n.º 5
0
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;
}
Ejemplo n.º 6
0
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);
}
Ejemplo n.º 7
0
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);
        }
    }
}