Path: blob/main/src/netedit/dialogs/elements/GNETemplateElementDialog.h
169685 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 GNETemplateElementDialog.h14/// @author Pablo Alvarez Lopez15/// @date Aug 202516///17// A template based on GNEDialog used for editing elements18/****************************************************************************/19#pragma once20#include <config.h>2122#include <netedit/dialogs/GNEDialog.h>23#include <netedit/GNETagPropertiesDatabase.h>2425// ===========================================================================26// class definitions27// ===========================================================================2829template <typename T>30class GNETemplateElementDialog : public GNEDialog {3132public:33/// @brief constructor34GNETemplateElementDialog(T* element, DialogType type) :35GNEDialog(element->getNet()->getViewNet()->getViewParent()->getGNEAppWindows(),36TLF("Edit % '%'", element->getTagStr(), element->getID()).c_str(),37element->getTagProperty()->getGUIIcon(), type, Buttons::ACCEPT_CANCEL_RESET,38OpenType::MODAL, ResizeMode::STATIC),39myElement(element),40myChangesDescription(TLF("change % values", element->getTagStr())) {41// init commandGroup42myElement->getNet()->getViewNet()->getUndoList()->begin(myElement, myChangesDescription);43}4445/// @brief destructor46~GNETemplateElementDialog() {}4748/// @brief get edited element49T* getElement() const {50return myElement;51}5253/// @brief run internal test54virtual void runInternalTest(const InternalTestStep::DialogArgument* dialogArgument) = 0;5556/// @name FOX-callbacks57/// @{58/// @brief event after press accept button59virtual long onCmdAccept(FXObject* sender, FXSelector sel, void* ptr) = 0;6061/// @brief event after press cancel button62virtual long onCmdReset(FXObject*, FXSelector, void*) = 0;6364/// @brief called when cancel or no button is pressed65long onCmdCancel(FXObject*, FXSelector, void*) {66myElement->getNet()->getViewNet()->getUndoList()->abortLastChangeGroup();67return closeDialogCanceling();68}6970/// @brief called when abort is called either closing dialog or pressing abort button71long onCmdAbort(FXObject*, FXSelector, void*) {72myElement->getNet()->getViewNet()->getUndoList()->abortLastChangeGroup();73return closeDialogAborting();74}7576/// @}7778protected:79/// @brief default constructor80GNETemplateElementDialog() :81GNEDialog() {}8283/// @brief pointer to edited element84T* myElement = nullptr;8586/// @brief close dialog commiting changes87long acceptElementDialog() {88myElement->getNet()->getViewNet()->getUndoList()->end();89return closeDialogAccepting();90}9192/// @brief reset changes did in this dialog.93void resetChanges() {94// abort last command group an start editing again95myElement->getNet()->getViewNet()->getUndoList()->abortLastChangeGroup();96myElement->getNet()->getViewNet()->getUndoList()->begin(myElement, myChangesDescription);97}9899private:100/// @brief description of changes did in this element dialog101std::string myChangesDescription;102103/// @brief Invalidated copy constructor104GNETemplateElementDialog(const GNETemplateElementDialog&) = delete;105106/// @brief Invalidated assignment operator107GNETemplateElementDialog& operator=(const GNETemplateElementDialog&) = delete;108};109110111