Path: blob/main/src/netedit/frames/data/GNEEdgeDataFrame.cpp
169685 views
/****************************************************************************/1// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo2// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.3// This program and the accompanying materials are made available under the4// terms of the Eclipse Public License 2.0 which is available at5// https://www.eclipse.org/legal/epl-2.0/6// This Source Code may also be made available under the following Secondary7// Licenses when the conditions for such availability set forth in the Eclipse8// Public License 2.0 are satisfied: GNU General Public License, version 29// or later which is available at10// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html11// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later12/****************************************************************************/13/// @file GNEEdgeDataFrame.cpp14/// @author Pablo Alvarez Lopez15/// @date Jan 202016///17// The Widget for add edgeData elements18/****************************************************************************/1920#include <netedit/GNEApplicationWindow.h>21#include <netedit/GNETagProperties.h>22#include <netedit/GNEViewNet.h>23#include <netedit/GNEViewParent.h>24#include <netedit/elements/data/GNEDataHandler.h>25#include <netedit/elements/data/GNEDataInterval.h>26#include <netedit/elements/data/GNEEdgeData.h>27#include <netedit/elements/network/GNEEdge.h>28#include <netedit/frames/GNEAttributesEditor.h>2930#include "GNEEdgeDataFrame.h"3132// ===========================================================================33// method definitions34// ===========================================================================3536GNEEdgeDataFrame::GNEEdgeDataFrame(GNEViewParent* viewParent, GNEViewNet* viewNet) :37GNEGenericDataFrame(viewParent, viewNet, GNE_TAG_EDGEREL_SINGLE, false) {38}394041GNEEdgeDataFrame::~GNEEdgeDataFrame() {}424344bool45GNEEdgeDataFrame::addEdgeData(const GNEViewNetHelper::ViewObjectsSelector& viewObjects, const GNEViewNetHelper::MouseButtonKeyPressed& /*mouseButtonKeyPressed*/) {46// first check if we clicked over an edge47if (viewObjects.getEdgeFront() && myDataSetSelector->getDataSet() && myIntervalSelector->getDataInterval()) {48// check if exist already a edge rel single in the given edge49if (myIntervalSelector->getDataInterval()->edgeRelSingleExists(viewObjects.getEdgeFront())) {50// write warning51WRITE_WARNINGF(TL("There is already a % in edge '%'"), toString(GNE_TAG_EDGEREL_SINGLE), viewObjects.getEdgeFront()->getID());52// abort edge data creation53return false;54}55// check if parameters are valid56if (myGenericDataAttributesEditor->checkAttributes(true)) {57GNEDataHandler dataHandler(myViewNet->getNet(), "", myViewNet->getViewParent()->getGNEAppWindows()->isUndoRedoAllowed());58// create interval base object59CommonXMLStructure::SumoBaseObject* intervalBaseObject = new CommonXMLStructure::SumoBaseObject(nullptr);60intervalBaseObject->addStringAttribute(SUMO_ATTR_ID, myIntervalSelector->getDataInterval()->getID());61intervalBaseObject->addDoubleAttribute(SUMO_ATTR_BEGIN, myIntervalSelector->getDataInterval()->getAttributeDouble(SUMO_ATTR_BEGIN));62intervalBaseObject->addDoubleAttribute(SUMO_ATTR_END, myIntervalSelector->getDataInterval()->getAttributeDouble(SUMO_ATTR_END));63// create genericData base object64CommonXMLStructure::SumoBaseObject* genericDataBaseObject = new CommonXMLStructure::SumoBaseObject(intervalBaseObject);65// obtain parameters66myGenericDataAttributesEditor->fillSumoBaseObject(genericDataBaseObject);67// create edgeData68dataHandler.buildEdgeData(genericDataBaseObject, viewObjects.getEdgeFront()->getID(), genericDataBaseObject->getParameters());69// delete data interval object (and child)70delete intervalBaseObject;71return true;72} else {73return false;74}75} else {76// invalid parent parameters77return false;78}79}808182/****************************************************************************/838485