Path: blob/main/src/netedit/changes/GNEChange_DataSet.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_DataSet.cpp14/// @author Pablo Alvarez Lopez15/// @date Jan 202016///17// A network change in which a data set element 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/GNEDataSet.h>2526#include "GNEChange_DataSet.h"2728// ===========================================================================29// FOX-declarations30// ===========================================================================3132FXIMPLEMENT_ABSTRACT(GNEChange_DataSet, GNEChange, nullptr, 0)3334// ===========================================================================35// member method definitions36// ===========================================================================3738GNEChange_DataSet::GNEChange_DataSet(GNEDataSet* dataSet, bool forward) :39GNEChange(Supermode::DATA, forward, dataSet->isAttributeCarrierSelected()),40myDataSet(dataSet) {41myDataSet->incRef("GNEChange_DataSet");42}434445GNEChange_DataSet::~GNEChange_DataSet() {46// only continue we have undo-redo mode enabled47if (myDataSet->getNet()->getViewNet()->getViewParent()->getGNEAppWindows()->isUndoRedoAllowed()) {48myDataSet->decRef("GNEChange_DataSet");49if (myDataSet->unreferenced() &&50myDataSet->getNet()->getAttributeCarriers()->retrieveDataSet(myDataSet->getID(), false)) {51// make sure that element isn't in net before removing52myDataSet->getNet()->getAttributeCarriers()->deleteDataSet(myDataSet);53// delete data set54delete myDataSet;55}56}57}585960void61GNEChange_DataSet::undo() {62if (myForward) {63// delete data set from net64myDataSet->getNet()->getAttributeCarriers()->deleteDataSet(myDataSet);65} else {66// insert data set into net67myDataSet->getNet()->getAttributeCarriers()->insertDataSet(myDataSet);68}69// require always save elements70myDataSet->getNet()->getSavingStatus()->requireSaveDataElements();71}727374void75GNEChange_DataSet::redo() {76if (myForward) {77// insert data set into net78myDataSet->getNet()->getAttributeCarriers()->insertDataSet(myDataSet);79} else {80// delete data set from net81myDataSet->getNet()->getAttributeCarriers()->deleteDataSet(myDataSet);82}83// require always save elements84myDataSet->getNet()->getSavingStatus()->requireSaveDataElements();85}868788std::string89GNEChange_DataSet::undoName() const {90if (myForward) {91return (TL("Undo create ") + myDataSet->getTagStr() + " '" + myDataSet->getID() + "'");92} else {93return (TL("Undo delete ") + myDataSet->getTagStr() + " '" + myDataSet->getID() + "'");94}95}969798std::string99GNEChange_DataSet::redoName() const {100if (myForward) {101return (TL("Redo create ") + myDataSet->getTagStr() + " '" + myDataSet->getID() + "'");102} else {103return (TL("Redo delete ") + myDataSet->getTagStr() + " '" + myDataSet->getID() + "'");104}105}106107108/****************************************************************************/109110111