Path: blob/main/src/netedit/frames/data/GNEMeanDataFrame.h
169684 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 GNEMeanDataFrame.h14/// @author Pablo Alvarez Lopez15/// @date Nov 202216///17// The Widget for edit meanData elements18/****************************************************************************/19#pragma once20#include <config.h>2122#include <netedit/frames/GNEFrame.h>2324// ===========================================================================25// class declaration26// ===========================================================================2728class GNEMeanData;29class GNEAttributesEditor;3031// ===========================================================================32// class definitions33// ===========================================================================3435class GNEMeanDataFrame : public GNEFrame {3637public:38// ===========================================================================39// class MeanDataTypeSelector40// ===========================================================================4142class MeanDataTypeSelector : public MFXGroupBoxModule {43/// @brief FOX-declaration44FXDECLARE(GNEMeanDataFrame::MeanDataTypeSelector)4546public:47/// @brief constructor48MeanDataTypeSelector(GNEMeanDataFrame* meanDataFrameParent);4950/// @brief destructor51~MeanDataTypeSelector();5253/// @brief get current MeanData54const GNETagProperties* getCurrentMeanData() const;5556/// @brief refresh meanData selector57void refreshMeanDataTypeSelector();5859/// @name FOX-callbacks60/// @{61/// @brief Called when the user select another element in ComboBox62long onCmdSelectItem(FXObject*, FXSelector, void*);63/// @}6465protected:66/// @brief FOX need this67FOX_CONSTRUCTOR(MeanDataTypeSelector)6869private:70/// @brief pointer to Frame Parent71GNEMeanDataFrame* myMeanDataFrameParent;7273/// @brief CurrentMeanData selected74const GNETagProperties* myCurrentMeanData = nullptr;7576/// @brief comboBox with the list of vTypes77MFXComboBoxIcon* myTypeComboBox;78};7980// ===========================================================================81// class MeanDataEditor82// ===========================================================================8384class MeanDataEditor : public MFXGroupBoxModule {85/// @brief FOX-declaration86FXDECLARE(GNEMeanDataFrame::MeanDataEditor)8788public:89/// @brief constructor90MeanDataEditor(GNEMeanDataFrame* meanDataFrameParent);9192/// @brief destructor93~MeanDataEditor();9495/// @brief show MeanDataEditor modul96void showMeanDataEditorModule();9798/// @brief hide MeanDataEditor box99void hideMeanDataEditorModule();100101/// @brief update MeanDataEditor modul102void refreshMeanDataEditorModule();103104/// @name FOX-callbacks105/// @{106/// @brief Called when "Vreate Vehicle MeanData" button is clicked107long onCmdCreateMeanData(FXObject*, FXSelector, void*);108109/// @brief Called when "Delete Vehicle MeanData" button is clicked110long onCmdDeletetMeanData(FXObject*, FXSelector, void*);111112/// @brief Called when "Copy Vehicle MeanData" button is clicked113long onCmdCopyMeanData(FXObject*, FXSelector, void*);114/// @}115116protected:117/// @brief FOX needs this118FOX_CONSTRUCTOR(MeanDataEditor)119120private:121/// @brief pointer to meanData Frame Parent122GNEMeanDataFrame* myMeanDataFrameParent;123124/// @brief "create meanData" button125FXButton* myCreateMeanDataButton;126127/// @brief "delete meanData" button128FXButton* myDeleteMeanDataButton;129130/// @brief "copy meanData"131FXButton* myCopyMeanDataButton;132};133134// ===========================================================================135// class MeanDataSelector136// ===========================================================================137138class MeanDataSelector : public MFXGroupBoxModule {139/// @brief FOX-declaration140FXDECLARE(GNEMeanDataFrame::MeanDataSelector)141142public:143/// @brief constructor144MeanDataSelector(GNEMeanDataFrame* typeFrameParent);145146/// @brief destructor147~MeanDataSelector();148149/// @brief show MeanDataSelector150void showMeanDataSelector();151152/// @brief hide MeanDataSelector153void hideMeanDataSelector();154155/// @brief get current Vehicle MeanData156GNEMeanData* getCurrentMeanData() const;157158/// @brief set current Vehicle MeanData159void setCurrentMeanData(GNEMeanData* vMeanData);160161/// @brief refresh meanData selector162void refreshMeanDataSelector(bool afterChangingID);163164/// @brief refresh meanData selector (only IDs, without refreshing attributes)165void refreshMeanDataSelectorIDs();166167/// @name FOX-callbacks168/// @{169/// @brief Called when the user select another element in ComboBox170long onCmdSelectItem(FXObject*, FXSelector, void*);171/// @}172173protected:174FOX_CONSTRUCTOR(MeanDataSelector)175176private:177/// @brief pointer to Frame Parent178GNEMeanDataFrame* myMeanDataFrameParent;179180/// @brief pointer to current meanData181GNEMeanData* myCurrentMeanData;182183/// @brief comboBox with the list of meanDatas184MFXComboBoxIcon* myMeanDataComboBox;185};186187/**@brief Constructor (protected due GNEMeanDataFrame is abtract)188* @brief viewParent GNEViewParent in which this GNEFrame is placed189* @brief viewNet GNEViewNet that uses this GNEFrame190*/191GNEMeanDataFrame(GNEViewParent* viewParent, GNEViewNet* viewNet);192193/// @brief Destructor194~GNEMeanDataFrame();195196/// @brief show Frame197void show();198199/// @brief hide Frame200void hide();201202/// @brief function called after set a valid attribute in AttributeCreator/AttributeEditor/ParametersEditor/...203void attributeUpdated(SumoXMLAttr attribute);204205/// @brief function called after undo/redo in the current frame206void updateFrameAfterUndoRedo();207208protected:209/// @brief meanData type selector210MeanDataTypeSelector* myMeanDataTypeSelector = nullptr;211212/// @brief meanData editor213MeanDataEditor* myMeanDataEditor = nullptr;214215/// @brief meanData selector216MeanDataSelector* myMeanDataSelector = nullptr;217218/// @brief meanData attributes editor219GNEAttributesEditor* myMeanDataAttributesEditor = nullptr;220221private:222/// @brief Invalidated copy constructor.223GNEMeanDataFrame(const GNEMeanDataFrame&) = delete;224225/// @brief Invalidated assignment operator.226GNEMeanDataFrame& operator=(const GNEMeanDataFrame&) = delete;227};228229230