Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/netedit/changes/GNEChange_MeanData.cpp
169678 views
1
/****************************************************************************/
2
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
// Copyright (C) 2001-2025 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 GNEChange_MeanData.cpp
15
/// @author Pablo Alvarez Lopez
16
/// @date Nov 2022
17
///
18
// A network change in which a mean data set is created or deleted
19
/****************************************************************************/
20
21
#include <netedit/GNENet.h>
22
#include <netedit/GNETagProperties.h>
23
#include <netedit/GNEViewNet.h>
24
#include <netedit/GNEViewParent.h>
25
#include <netedit/GNEApplicationWindow.h>
26
#include <netedit/elements/data/GNEMeanData.h>
27
28
#include "GNEChange_MeanData.h"
29
30
// ===========================================================================
31
// FOX-declarations
32
// ===========================================================================
33
FXIMPLEMENT_ABSTRACT(GNEChange_MeanData, GNEChange, nullptr, 0)
34
35
// ===========================================================================
36
// member method definitions
37
// ===========================================================================
38
39
GNEChange_MeanData::GNEChange_MeanData(GNEMeanData* meanData, bool forward) :
40
GNEChange(Supermode::DATA, forward, meanData->isAttributeCarrierSelected()),
41
myMeanData(meanData) {
42
myMeanData->incRef("GNEChange_MeanData");
43
}
44
45
46
GNEChange_MeanData::~GNEChange_MeanData() {
47
// only continue we have undo-redo mode enabled
48
if (myMeanData->getNet()->getViewNet()->getViewParent()->getGNEAppWindows()->isUndoRedoAllowed()) {
49
myMeanData->decRef("GNEChange_MeanData");
50
if (myMeanData->unreferenced()) {
51
// make sure that MeanData isn't in net before removing
52
if (myMeanData->getNet()->getAttributeCarriers()->retrieveMeanData(myMeanData->getTagProperty()->getTag(), myMeanData->getID(), false)) {
53
// delete MeanData from net
54
myMeanData->getNet()->getAttributeCarriers()->deleteMeanData(myMeanData);
55
}
56
// delete mean data
57
delete myMeanData;
58
}
59
}
60
}
61
62
63
void
64
GNEChange_MeanData::undo() {
65
if (myForward) {
66
// unselect if mySelectedElement is enabled
67
if (mySelectedElement) {
68
myMeanData->unselectAttributeCarrier();
69
}
70
// delete meanData from net
71
myMeanData->getNet()->getAttributeCarriers()->deleteMeanData(myMeanData);
72
} else {
73
// select if mySelectedElement is enabled
74
if (mySelectedElement) {
75
myMeanData->selectAttributeCarrier();
76
}
77
// insert meanData into net
78
myMeanData->getNet()->getAttributeCarriers()->insertMeanData(myMeanData);
79
}
80
// require always save elements
81
myMeanData->getNet()->getSavingStatus()->requireSaveMeanDatas();
82
}
83
84
85
void
86
GNEChange_MeanData::redo() {
87
if (myForward) {
88
// select if mySelectedElement is enabled
89
if (mySelectedElement) {
90
myMeanData->selectAttributeCarrier();
91
}
92
// insert meanData into net
93
myMeanData->getNet()->getAttributeCarriers()->insertMeanData(myMeanData);
94
} else {
95
// unselect if mySelectedElement is enabled
96
if (mySelectedElement) {
97
myMeanData->unselectAttributeCarrier();
98
}
99
// delete meanData from net
100
myMeanData->getNet()->getAttributeCarriers()->deleteMeanData(myMeanData);
101
}
102
// require always save elements
103
myMeanData->getNet()->getSavingStatus()->requireSaveMeanDatas();
104
}
105
106
107
std::string
108
GNEChange_MeanData::undoName() const {
109
if (myForward) {
110
return (TL("Undo create ") + myMeanData->getTagStr());
111
} else {
112
return (TL("Undo delete ") + myMeanData->getTagStr());
113
}
114
}
115
116
117
std::string
118
GNEChange_MeanData::redoName() const {
119
if (myForward) {
120
return (TL("Redo create ") + myMeanData->getTagStr());
121
} else {
122
return (TL("Redo delete ") + myMeanData->getTagStr());
123
}
124
}
125
126