Eclipse SUMO - Simulation of Urban MObility
GNEChange_EnableAttribute.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2022 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 /****************************************************************************/
18 // A network change in which something is changed (for undo/redo)
19 /****************************************************************************/
20 #include <config.h>
21 
22 #include <netedit/GNENet.h>
23 
25 
26 // ===========================================================================
27 // FOX-declarations
28 // ===========================================================================
29 FXIMPLEMENT_ABSTRACT(GNEChange_EnableAttribute, GNEChange, nullptr, 0)
30 
31 // ===========================================================================
32 // member method definitions
33 // ===========================================================================
34 
36  GNEChange(ac->getTagProperty().getSupermode(), true, false),
37  myAC(ac),
38  myKey(key),
39  myOrigValue(ac->isAttributeEnabled(key)),
40  myNewValue(value) {
41  myAC->incRef("GNEChange_EnableAttribute " + myAC->getTagProperty().getTagStr());
42 }
43 
44 
45 GNEChange_EnableAttribute::GNEChange_EnableAttribute(GNEAttributeCarrier* ac, const SumoXMLAttr key, const bool value, const int /* previousParameters */) :
46  GNEChange(ac->getTagProperty().getSupermode(), true, false),
47  myAC(ac),
48  myKey(key),
49  myOrigValue(ac->isAttributeEnabled(key)),
50  myNewValue(value) {
51  myAC->incRef("GNEChange_EnableAttribute " + myAC->getTagProperty().getTagStr());
52 }
53 
54 
56  // decrease reference
57  myAC->decRef("GNEChange_EnableAttribute " + myAC->getTagProperty().getTagStr());
58  // remove if is unreferenced
59  if (myAC->unreferenced()) {
60  // show extra information for tests
61  WRITE_DEBUG("Deleting unreferenced " + myAC->getTagStr() + " '" + myAC->getID() + "' in GNEChange_EnableAttribute");
62  // delete AC
63  delete myAC;
64  }
65 }
66 
67 
68 void
70  // show extra information for tests
71  WRITE_DEBUG("Setting previous attribute into " + myAC->getTagStr() + " '" + myAC->getID() + "'");
72  // set original value
74  // check if networkElements, additional or shapes has to be saved
76  myAC->getNet()->requireSaveNet(true);
77  } else if (myAC->getTagProperty().isAdditionalElement()) {
79  } else if (myAC->getTagProperty().isDemandElement()) {
81  }
82 }
83 
84 
85 void
87  // show extra information for tests
88  WRITE_DEBUG("Setting new attribute into " + myAC->getTagStr() + " '" + myAC->getID() + "'");
89  // set new attributes
91  // check if networkElements, additional or shapes has to be saved
93  myAC->getNet()->requireSaveNet(true);
94  } else if (myAC->getTagProperty().isAdditionalElement()) {
96  } else if (myAC->getTagProperty().isDemandElement()) {
98  }
99 }
100 
101 
102 std::string
104  if (myNewValue) {
105  return ("Undo enable " + myAC->getTagStr() + " attribute in '" + myAC->getID() + "'");
106  } else {
107  return ("Undo enable " + myAC->getTagStr() + " attribute in '" + myAC->getID() + "'");
108  }
109 }
110 
111 
112 std::string
114  if (myNewValue) {
115  return ("Redo enable " + myAC->getTagStr() + " attribute in '" + myAC->getID() + "'");
116  } else {
117  return ("Redo enable " + myAC->getTagStr() + " attribute in '" + myAC->getID() + "'");
118  }
119 }
120 
121 /****************************************************************************/
#define WRITE_DEBUG(msg)
Definition: MsgHandler.h:276
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
const std::string getID() const
get ID (all Attribute Carriers have one)
virtual void toggleAttribute(SumoXMLAttr key, const bool value)
method for enable or disable the attribute and nothing else (used in GNEChange_EnableAttribute)
const std::string & getTagStr() const
get tag assigned to this object in string format
const GNETagProperties & getTagProperty() const
get tagProperty associated with this Attribute Carrier
GNENet * getNet() const
get pointer to net
the function-object for an editing operation (abstract base)
GNEAttributeCarrier * myAC
the net to which all operations shall be applied
std::string redoName() const
get Redo name
const bool myNewValue
the new value
const SumoXMLAttr myKey
The attribute name.
GNEChange_EnableAttribute(GNEAttributeCarrier *ac, const SumoXMLAttr key, const bool value)
constructor
const bool myOrigValue
the original value
std::string undoName() const
return undoName
the function-object for an editing operation (abstract base)
Definition: GNEChange.h:60
void requireSaveNet(bool value)
inform that net has to be saved
Definition: GNENet.cpp:1179
void requireSaveAdditionals(bool value)
inform that additionals has to be saved
Definition: GNENet.cpp:2017
void requireSaveDemandElements(bool value)
inform that demand elements has to be saved
Definition: GNENet.cpp:2083
void decRef(const std::string &debugMsg="")
Decrease reference.
void incRef(const std::string &debugMsg="")
Increase reference.
bool unreferenced()
check if object ins't referenced
const std::string & getTagStr() const
get Tag vinculated with this attribute Property in String Format (used to avoid multiple calls to toS...
bool isNetworkElement() const
return true if tag correspond to a network element
bool isDemandElement() const
return true if tag correspond to a demand element
bool isAdditionalElement() const
return true if tag correspond to an additional element (note: this include TAZ, shapes and wires)