Path: blob/main/src/netedit/changes/GNEChange_Additional.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_Additional.cpp14/// @author Pablo Alvarez Lopez15/// @date Nov 201516///17// A network change in which a busStop is created or deleted18/****************************************************************************/1920#include <netedit/GNENet.h>21#include <netedit/GNEViewNet.h>22#include <netedit/GNEViewParent.h>23#include <netedit/GNEApplicationWindow.h>2425#include "GNEChange_Additional.h"2627// ===========================================================================28// FOX-declarations29// ===========================================================================3031FXIMPLEMENT_ABSTRACT(GNEChange_Additional, GNEChange, nullptr, 0)3233// ===========================================================================34// member method definitions35// ===========================================================================3637GNEChange_Additional::GNEChange_Additional(GNEAdditional* additional, bool forward) :38GNEChange(Supermode::NETWORK, additional, forward, additional->isAttributeCarrierSelected()),39myAdditional(additional) {40myAdditional->incRef("GNEChange_Additional");41}424344GNEChange_Additional::~GNEChange_Additional() {45// only continue we have undo-redo mode enabled46if (myAdditional->getNet()->getViewNet()->getViewParent()->getGNEAppWindows()->isUndoRedoAllowed()) {47myAdditional->decRef("GNEChange_Additional");48if (myAdditional->unreferenced()) {49// make sure that additional isn't in net before removing50if (myAdditional->getNet()->getAttributeCarriers()->retrieveAdditional(myAdditional, false)) {51// delete additional from net52myAdditional->getNet()->getAttributeCarriers()->deleteAdditional(myAdditional);53}54delete myAdditional;55}56}57}585960void61GNEChange_Additional::undo() {62if (myForward) {63// unselect if mySelectedElement is enabled64if (mySelectedElement) {65myAdditional->unselectAttributeCarrier();66}67// delete additional from net68myAdditional->getNet()->getAttributeCarriers()->deleteAdditional(myAdditional);69// remove element from parent and children70removeElementFromParentsAndChildren(myAdditional);71} else {72// select if mySelectedElement is enabled73if (mySelectedElement) {74myAdditional->selectAttributeCarrier();75}76// add element in parent and children77addElementInParentsAndChildren(myAdditional);78// insert additional into net79myAdditional->getNet()->getAttributeCarriers()->insertAdditional(myAdditional);80}81// require always save additionals82myAdditional->getNet()->getSavingStatus()->requireSaveAdditionals();83}848586void87GNEChange_Additional::redo() {88if (myForward) {89// select if mySelectedElement is enabled90if (mySelectedElement) {91myAdditional->selectAttributeCarrier();92}93// add element in parent and children94addElementInParentsAndChildren(myAdditional);95// insert additional into net96myAdditional->getNet()->getAttributeCarriers()->insertAdditional(myAdditional);97} else {98// unselect if mySelectedElement is enabled99if (mySelectedElement) {100myAdditional->unselectAttributeCarrier();101}102// delete additional from net103myAdditional->getNet()->getAttributeCarriers()->deleteAdditional(myAdditional);104// remove element from parent and children105removeElementFromParentsAndChildren(myAdditional);106}107// require always save additionals108myAdditional->getNet()->getSavingStatus()->requireSaveAdditionals();109}110111112std::string113GNEChange_Additional::undoName() const {114if (myForward) {115return (TL("Undo create ") + myAdditional->getTagStr() + " '" + myAdditional->getID() + "'");116} else {117return (TL("Undo delete ") + myAdditional->getTagStr() + " '" + myAdditional->getID() + "'");118}119}120121122std::string123GNEChange_Additional::redoName() const {124if (myForward) {125return (TL("Redo create ") + myAdditional->getTagStr() + " '" + myAdditional->getID() + "'");126} else {127return (TL("Redo delete ") + myAdditional->getTagStr() + " '" + myAdditional->getID() + "'");128}129}130131132