Path: blob/main/src/netedit/changes/GNEChange_DataInterval.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_DataInterval.cpp14/// @author Pablo Alvarez Lopez15/// @date Jan 202016///17// A network change in which a data interval 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/GNEDataInterval.h>2526#include "GNEChange_DataInterval.h"2728// ===========================================================================29// FOX-declarations30// ===========================================================================3132FXIMPLEMENT_ABSTRACT(GNEChange_DataInterval, GNEChange, nullptr, 0)3334// ===========================================================================35// member method definitions36// ===========================================================================3738GNEChange_DataInterval::GNEChange_DataInterval(GNEDataInterval* dataInterval, bool forward) :39GNEChange(Supermode::DATA, forward, dataInterval->isAttributeCarrierSelected()),40myDataInterval(dataInterval),41myDataSetParent(dataInterval->getDataSetParent()) {42myDataInterval->incRef("GNEChange_DataInterval");43}444546GNEChange_DataInterval::~GNEChange_DataInterval() {47// only continue we have undo-redo mode enabled48if (myDataInterval->getNet()->getViewNet()->getViewParent()->getGNEAppWindows()->isUndoRedoAllowed()) {49myDataInterval->decRef("GNEChange_DataInterval");50if (myDataInterval->unreferenced() &&51myDataInterval->getNet()->getAttributeCarriers()->retrieveDataSet(myDataSetParent->getID(), false) &&52myDataInterval->getNet()->getAttributeCarriers()->retrieveDataInterval(myDataInterval, false)) {53// check that data interval don't exist54myDataSetParent->removeDataIntervalChild(myDataInterval);55// delete dataInterval56delete myDataInterval;57}58}59}606162void63GNEChange_DataInterval::undo() {64if (myForward) {65// remove data interval from data set parent66myDataSetParent->removeDataIntervalChild(myDataInterval);67} else {68// add data interval into data set parent69myDataSetParent->addDataIntervalChild(myDataInterval);70}71// require always save elements72myDataInterval->getDataSetParent()->getNet()->getSavingStatus()->requireSaveDataElements();73}747576void77GNEChange_DataInterval::redo() {78if (myForward) {79// add data interval into data set parent80myDataSetParent->addDataIntervalChild(myDataInterval);81} else {82// remove data interval from data set parent83myDataSetParent->removeDataIntervalChild(myDataInterval);84}85// require always save elements86myDataInterval->getDataSetParent()->getNet()->getSavingStatus()->requireSaveDataElements();87}888990std::string91GNEChange_DataInterval::undoName() const {92if (myForward) {93return (TL("Undo create ") + myDataInterval->getTagStr() + " '" + myDataInterval->getID() + "'");94} else {95return (TL("Undo delete ") + myDataInterval->getTagStr() + " '" + myDataInterval->getID() + "'");96}97}9899100std::string101GNEChange_DataInterval::redoName() const {102if (myForward) {103return (TL("Redo create ") + myDataInterval->getTagStr() + " '" + myDataInterval->getID() + "'");104} else {105return (TL("Redo delete ") + myDataInterval->getTagStr() + " '" + myDataInterval->getID() + "'");106}107}108109110/****************************************************************************/111112113