/****************************************************************************/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 GNEPlanSelector.h14/// @author Pablo Alvarez Lopez15/// @date Sep 202316///17// Frame for select person/container plans18/****************************************************************************/19#pragma once20#include <config.h>2122#include "GNETagSelector.h"2324// ===========================================================================25// class declaration26// ===========================================================================2728class GNEFrame;2930// ===========================================================================31// class definitions32// ===========================================================================3334class GNEPlanSelector : public MFXGroupBoxModule {35/// @brief FOX-declaration36FXDECLARE(GNEPlanSelector)3738public:39/// @brief constructor40GNEPlanSelector(GNEFrame* frameParent, SumoXMLTag planType);4142/// @brief destructor43~GNEPlanSelector();4445/// @brief show plan selector46void showPlanSelector();4748/// @brief plan item selector49void hidePlanSelector();5051/// @brief get current plan tag properties52const GNETagProperties* getCurrentPlanTagProperties() const;5354/// @brief get current plan template55GNEDemandElement* getCurrentPlanTemplate() const;5657/// @brief refresh plan selector (used when frameParent is show)58void refreshPlanSelector();5960/// @brief check if mark routes with dotted contours61bool markRoutes() const;6263/// @brief check if mark edges with dotted contours64bool markEdges() const;6566/// @brief check if mark junctions with dotted contours67bool markJunctions() const;6869/// @brief check if mark stoppingPlaces with dotted contours70bool markStoppingPlaces() const;7172/// @brief check if mark TAZs with dotted contours73bool markTAZs() const;7475/// @brief update junction colors76void updateJunctionColors();7778/// @brief update edge colors79void updateEdgeColors();8081/// @brief clear junction colors82void clearJunctionColors();8384/// @brief clear edge colors85void clearEdgeColors();8687/// @name FOX-callbacks88/// @{8990/// @brief Called when the user select an element in ComboBox91long onCmdSelectPlan(FXObject*, FXSelector, void*);9293/// @}9495protected:96/// @brief FOX need this97FOX_CONSTRUCTOR(GNEPlanSelector)9899/// @brief check if selected plan is valid100bool isPlanValid() const;101102/// @brief fill person templates103void fillPersonPlanTemplates(GNENet* net);104105/// @brief fill container templates106void fillContainerPlanTemplates(GNENet* net);107108private:109/// @brief pointer to Frame Parent110GNEFrame* myFrameParent;111112/// @brief comboBox with the tags113MFXComboBoxIcon* myPlansComboBox;114115/// @brief current plan template;116std::pair<GNETagProperties*, GNEDemandElement*> myCurrentPlanTemplate;117118/// @brief list with demand templates119std::vector<std::pair<GNETagProperties*, GNEDemandElement*> > myPlanTemplates;120};121122123