Path: blob/main/src/netedit/changes/GNEChange_GenericData.cpp
169678 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 GNEChange_GenericData.cpp14/// @author Pablo Alvarez Lopez15/// @date Jan 202016///17// A network change in which a generic data set is created or deleted18/****************************************************************************/1920#include <netedit/GNENet.h>21#include <netedit/GNEViewNet.h>22#include <netedit/GNEViewParent.h>23#include <netedit/GNEApplicationWindow.h>24#include <netedit/elements/data/GNEDataInterval.h>2526#include "GNEChange_GenericData.h"2728// ===========================================================================29// FOX-declarations30// ===========================================================================3132FXIMPLEMENT_ABSTRACT(GNEChange_GenericData, GNEChange, nullptr, 0)3334// ===========================================================================35// member method definitions36// ===========================================================================3738GNEChange_GenericData::GNEChange_GenericData(GNEGenericData* genericData, bool forward) :39GNEChange(Supermode::DATA, genericData, forward, genericData->isAttributeCarrierSelected()),40myGenericData(genericData),41myDataIntervalParent(genericData->getDataIntervalParent()) {42myGenericData->incRef("GNEChange_GenericData");43}444546GNEChange_GenericData::~GNEChange_GenericData() {47// only continue we have undo-redo mode enabled48if (myGenericData->getNet()->getViewNet()->getViewParent()->getGNEAppWindows()->isUndoRedoAllowed()) {49myGenericData->decRef("GNEChange_GenericData");50if (myGenericData->unreferenced() &&51myGenericData->getNet()->getAttributeCarriers()->retrieveDataInterval(myDataIntervalParent, false) &&52myGenericData->getNet()->getAttributeCarriers()->retrieveGenericData(myGenericData, false)) {53// delete generic data from interval parent54myDataIntervalParent->removeGenericDataChild(myGenericData);55// delete generic data56delete myGenericData;57}58}59}606162void63GNEChange_GenericData::undo() {64if (myForward) {65// unselect if mySelectedElement is enabled66if (mySelectedElement) {67myGenericData->unselectAttributeCarrier();68}69// delete generic data from interval parent70myDataIntervalParent->removeGenericDataChild(myGenericData);71// remove element from parent and children72removeElementFromParentsAndChildren(myGenericData);73} else {74// select if mySelectedElement is enabled75if (mySelectedElement) {76myGenericData->selectAttributeCarrier();77}78// add element in parent and children79addElementInParentsAndChildren(myGenericData);80// insert generic data into interval parent81myDataIntervalParent->addGenericDataChild(myGenericData);82}83// require always save elements84myGenericData->getNet()->getSavingStatus()->requireSaveDataElements();85}868788void89GNEChange_GenericData::redo() {90if (myForward) {91// select if mySelectedElement is enabled92if (mySelectedElement) {93myGenericData->selectAttributeCarrier();94}95// add element in parent and children96addElementInParentsAndChildren(myGenericData);97// insert generic data into interval parent98myDataIntervalParent->addGenericDataChild(myGenericData);99} else {100// unselect if mySelectedElement is enabled101if (mySelectedElement) {102myGenericData->unselectAttributeCarrier();103}104// delete generic data from interval parent105myDataIntervalParent->removeGenericDataChild(myGenericData);106// remove element from parent and children107removeElementFromParentsAndChildren(myGenericData);108}109// require always save elements110myGenericData->getNet()->getSavingStatus()->requireSaveDataElements();111}112113114std::string115GNEChange_GenericData::undoName() const {116if (myForward) {117return (TL("Undo create ") + myGenericData->getTagStr());118} else {119return (TL("Undo delete ") + myGenericData->getTagStr());120}121}122123124std::string125GNEChange_GenericData::redoName() const {126if (myForward) {127return (TL("Redo create ") + myGenericData->getTagStr());128} else {129return (TL("Redo delete ") + myGenericData->getTagStr());130}131}132133134