Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/netedit/frames/data/GNEEdgeDataFrame.cpp
193678 views
1
/****************************************************************************/
2
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
// Copyright (C) 2001-2026 German Aerospace Center (DLR) and others.
4
// This program and the accompanying materials are made available under the
5
// terms of the Eclipse Public License 2.0 which is available at
6
// https://www.eclipse.org/legal/epl-2.0/
7
// This Source Code may also be made available under the following Secondary
8
// Licenses when the conditions for such availability set forth in the Eclipse
9
// Public License 2.0 are satisfied: GNU General Public License, version 2
10
// or later which is available at
11
// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13
/****************************************************************************/
14
/// @file GNEEdgeDataFrame.cpp
15
/// @author Pablo Alvarez Lopez
16
/// @date Jan 2020
17
///
18
// The Widget for add edgeData elements
19
/****************************************************************************/
20
21
#include <netedit/GNEApplicationWindow.h>
22
#include <netedit/GNETagProperties.h>
23
#include <netedit/GNEViewNet.h>
24
#include <netedit/GNEViewParent.h>
25
#include <netedit/elements/data/GNEDataHandler.h>
26
#include <netedit/elements/data/GNEDataInterval.h>
27
#include <netedit/elements/data/GNEEdgeData.h>
28
#include <netedit/elements/network/GNEEdge.h>
29
#include <netedit/frames/GNEAttributesEditor.h>
30
31
#include "GNEEdgeDataFrame.h"
32
33
// ===========================================================================
34
// method definitions
35
// ===========================================================================
36
37
GNEEdgeDataFrame::GNEEdgeDataFrame(GNEViewParent* viewParent, GNEViewNet* viewNet) :
38
GNEGenericDataFrame(viewParent, viewNet, GNE_TAG_EDGEREL_SINGLE, false) {
39
}
40
41
42
GNEEdgeDataFrame::~GNEEdgeDataFrame() {}
43
44
45
bool
46
GNEEdgeDataFrame::addEdgeData(const GNEViewNetHelper::ViewObjectsSelector& viewObjects, const GNEViewNetHelper::MouseButtonKeyPressed& /*mouseButtonKeyPressed*/) {
47
// first check if we clicked over an edge
48
if (viewObjects.getEdgeFront() && myDataSetSelector->getDataSet() && myIntervalSelector->getDataInterval()) {
49
// check if exist already a edge rel single in the given edge
50
if (myIntervalSelector->getDataInterval()->edgeRelSingleExists(viewObjects.getEdgeFront())) {
51
// write warning
52
WRITE_WARNINGF(TL("There is already a % in edge '%'"), toString(GNE_TAG_EDGEREL_SINGLE), viewObjects.getEdgeFront()->getID());
53
// abort edge data creation
54
return false;
55
}
56
// check if parameters are valid
57
if (myGenericDataAttributesEditor->checkAttributes(true)) {
58
GNEDataHandler dataHandler(myViewNet->getNet(), myDataSetSelector->getDataSet()->getFileBucket(),
59
myViewNet->getViewParent()->getGNEAppWindows()->isUndoRedoAllowed());
60
// create interval base object
61
CommonXMLStructure::SumoBaseObject* intervalBaseObject = new CommonXMLStructure::SumoBaseObject(nullptr);
62
intervalBaseObject->addStringAttribute(SUMO_ATTR_ID, myIntervalSelector->getDataInterval()->getID());
63
intervalBaseObject->addDoubleAttribute(SUMO_ATTR_BEGIN, myIntervalSelector->getDataInterval()->getAttributeDouble(SUMO_ATTR_BEGIN));
64
intervalBaseObject->addDoubleAttribute(SUMO_ATTR_END, myIntervalSelector->getDataInterval()->getAttributeDouble(SUMO_ATTR_END));
65
// create genericData base object
66
CommonXMLStructure::SumoBaseObject* genericDataBaseObject = new CommonXMLStructure::SumoBaseObject(intervalBaseObject);
67
// obtain parameters
68
myGenericDataAttributesEditor->fillSumoBaseObject(genericDataBaseObject);
69
// create edgeData
70
dataHandler.buildEdgeData(genericDataBaseObject, viewObjects.getEdgeFront()->getID(), genericDataBaseObject->getParameters());
71
// delete data interval object (and child)
72
delete intervalBaseObject;
73
return true;
74
} else {
75
return false;
76
}
77
} else {
78
// invalid parent parameters
79
return false;
80
}
81
}
82
83
84
/****************************************************************************/
85
86