Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/netedit/frames/GNEDemandSelector.h
169678 views
1
/****************************************************************************/
2
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.
4
// This program and the accompanying materials are made available under the
5
// terms of the Eclipse Public License 2.0 which is available at
6
// https://www.eclipse.org/legal/epl-2.0/
7
// This Source Code may also be made available under the following Secondary
8
// Licenses when the conditions for such availability set forth in the Eclipse
9
// Public License 2.0 are satisfied: GNU General Public License, version 2
10
// or later which is available at
11
// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13
/****************************************************************************/
14
/// @file GNEDemandSelector.h
15
/// @author Pablo Alvarez Lopez
16
/// @date Mar 2022
17
///
18
// Frame for select demand elements
19
/****************************************************************************/
20
#pragma once
21
#include <config.h>
22
23
#include <netedit/GNETagProperties.h>
24
#include <utils/foxtools/MFXGroupBoxModule.h>
25
26
// ===========================================================================
27
// class declaration
28
// ===========================================================================
29
30
class GNEFrame;
31
32
// ===========================================================================
33
// class definitions
34
// ===========================================================================
35
36
class GNEDemandElementSelector : public MFXGroupBoxModule {
37
/// @brief FOX-declaration
38
FXDECLARE(GNEDemandElementSelector)
39
40
public:
41
/// @brief constructor with a single tag
42
GNEDemandElementSelector(GNEFrame* frameParent, SumoXMLTag demandElementTag, const GNETagProperties::Type tagType);
43
44
/// @brief constructor with tag type
45
GNEDemandElementSelector(GNEFrame* frameParent, const std::vector<GNETagProperties::Type>& tagTypes);
46
47
/// @brief destructor
48
~GNEDemandElementSelector();
49
50
/// @brief get current demand element
51
GNEDemandElement* getCurrentDemandElement() const;
52
53
// @brief obtain allowed tags (derived from tagTypes)
54
const std::vector<SumoXMLTag>& getAllowedTags() const;
55
56
/// @brief set current demand element
57
void setDemandElement(GNEDemandElement* demandElement);
58
59
/// @brief set multiple demand elements to filter
60
void setDemandElements(const std::vector<GNEDemandElement*>& demandElements);
61
62
/// @brief show demand element selector
63
void showDemandElementSelector();
64
65
/// @brief hide demand element selector
66
void hideDemandElementSelector();
67
68
/// @brief check if demand element selector is shown
69
bool isDemandElementSelectorShown() const;
70
71
/// @brief refresh demand element selector
72
void refreshDemandElementSelector();
73
74
/// @brief get previous plan element
75
GNEDemandElement* getPreviousPlanElement() const;
76
77
/// @name FOX-callbacks
78
/// @{
79
/// @brief Called when the user select another demand elementelement in ComboBox
80
long onCmdSelectDemandElement(FXObject*, FXSelector, void*);
81
/// @}
82
83
protected:
84
/// @brief FOX need this
85
FOX_CONSTRUCTOR(GNEDemandElementSelector)
86
87
private:
88
/// @brief pointer to frame Parent
89
GNEFrame* myFrameParent;
90
91
/// @brief comboBox with the list of elements type
92
MFXComboBoxIcon* myDemandElementsComboBox;
93
94
/// @brief current demand element
95
GNEDemandElement* myCurrentDemandElement;
96
97
/// @brief demand element tags
98
std::vector<SumoXMLTag> myDemandElementTags;
99
100
/// @brief tag type (person, container or vehicle)
101
GNETagProperties::Type myTagType;
102
103
/// @brief flag for enable/disable multiple element selection
104
bool mySelectingMultipleElements;
105
};
106
107