Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/netedit/frames/data/GNEMeanDataFrame.h
169684 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 GNEMeanDataFrame.h
15
/// @author Pablo Alvarez Lopez
16
/// @date Nov 2022
17
///
18
// The Widget for edit meanData elements
19
/****************************************************************************/
20
#pragma once
21
#include <config.h>
22
23
#include <netedit/frames/GNEFrame.h>
24
25
// ===========================================================================
26
// class declaration
27
// ===========================================================================
28
29
class GNEMeanData;
30
class GNEAttributesEditor;
31
32
// ===========================================================================
33
// class definitions
34
// ===========================================================================
35
36
class GNEMeanDataFrame : public GNEFrame {
37
38
public:
39
// ===========================================================================
40
// class MeanDataTypeSelector
41
// ===========================================================================
42
43
class MeanDataTypeSelector : public MFXGroupBoxModule {
44
/// @brief FOX-declaration
45
FXDECLARE(GNEMeanDataFrame::MeanDataTypeSelector)
46
47
public:
48
/// @brief constructor
49
MeanDataTypeSelector(GNEMeanDataFrame* meanDataFrameParent);
50
51
/// @brief destructor
52
~MeanDataTypeSelector();
53
54
/// @brief get current MeanData
55
const GNETagProperties* getCurrentMeanData() const;
56
57
/// @brief refresh meanData selector
58
void refreshMeanDataTypeSelector();
59
60
/// @name FOX-callbacks
61
/// @{
62
/// @brief Called when the user select another element in ComboBox
63
long onCmdSelectItem(FXObject*, FXSelector, void*);
64
/// @}
65
66
protected:
67
/// @brief FOX need this
68
FOX_CONSTRUCTOR(MeanDataTypeSelector)
69
70
private:
71
/// @brief pointer to Frame Parent
72
GNEMeanDataFrame* myMeanDataFrameParent;
73
74
/// @brief CurrentMeanData selected
75
const GNETagProperties* myCurrentMeanData = nullptr;
76
77
/// @brief comboBox with the list of vTypes
78
MFXComboBoxIcon* myTypeComboBox;
79
};
80
81
// ===========================================================================
82
// class MeanDataEditor
83
// ===========================================================================
84
85
class MeanDataEditor : public MFXGroupBoxModule {
86
/// @brief FOX-declaration
87
FXDECLARE(GNEMeanDataFrame::MeanDataEditor)
88
89
public:
90
/// @brief constructor
91
MeanDataEditor(GNEMeanDataFrame* meanDataFrameParent);
92
93
/// @brief destructor
94
~MeanDataEditor();
95
96
/// @brief show MeanDataEditor modul
97
void showMeanDataEditorModule();
98
99
/// @brief hide MeanDataEditor box
100
void hideMeanDataEditorModule();
101
102
/// @brief update MeanDataEditor modul
103
void refreshMeanDataEditorModule();
104
105
/// @name FOX-callbacks
106
/// @{
107
/// @brief Called when "Vreate Vehicle MeanData" button is clicked
108
long onCmdCreateMeanData(FXObject*, FXSelector, void*);
109
110
/// @brief Called when "Delete Vehicle MeanData" button is clicked
111
long onCmdDeletetMeanData(FXObject*, FXSelector, void*);
112
113
/// @brief Called when "Copy Vehicle MeanData" button is clicked
114
long onCmdCopyMeanData(FXObject*, FXSelector, void*);
115
/// @}
116
117
protected:
118
/// @brief FOX needs this
119
FOX_CONSTRUCTOR(MeanDataEditor)
120
121
private:
122
/// @brief pointer to meanData Frame Parent
123
GNEMeanDataFrame* myMeanDataFrameParent;
124
125
/// @brief "create meanData" button
126
FXButton* myCreateMeanDataButton;
127
128
/// @brief "delete meanData" button
129
FXButton* myDeleteMeanDataButton;
130
131
/// @brief "copy meanData"
132
FXButton* myCopyMeanDataButton;
133
};
134
135
// ===========================================================================
136
// class MeanDataSelector
137
// ===========================================================================
138
139
class MeanDataSelector : public MFXGroupBoxModule {
140
/// @brief FOX-declaration
141
FXDECLARE(GNEMeanDataFrame::MeanDataSelector)
142
143
public:
144
/// @brief constructor
145
MeanDataSelector(GNEMeanDataFrame* typeFrameParent);
146
147
/// @brief destructor
148
~MeanDataSelector();
149
150
/// @brief show MeanDataSelector
151
void showMeanDataSelector();
152
153
/// @brief hide MeanDataSelector
154
void hideMeanDataSelector();
155
156
/// @brief get current Vehicle MeanData
157
GNEMeanData* getCurrentMeanData() const;
158
159
/// @brief set current Vehicle MeanData
160
void setCurrentMeanData(GNEMeanData* vMeanData);
161
162
/// @brief refresh meanData selector
163
void refreshMeanDataSelector(bool afterChangingID);
164
165
/// @brief refresh meanData selector (only IDs, without refreshing attributes)
166
void refreshMeanDataSelectorIDs();
167
168
/// @name FOX-callbacks
169
/// @{
170
/// @brief Called when the user select another element in ComboBox
171
long onCmdSelectItem(FXObject*, FXSelector, void*);
172
/// @}
173
174
protected:
175
FOX_CONSTRUCTOR(MeanDataSelector)
176
177
private:
178
/// @brief pointer to Frame Parent
179
GNEMeanDataFrame* myMeanDataFrameParent;
180
181
/// @brief pointer to current meanData
182
GNEMeanData* myCurrentMeanData;
183
184
/// @brief comboBox with the list of meanDatas
185
MFXComboBoxIcon* myMeanDataComboBox;
186
};
187
188
/**@brief Constructor (protected due GNEMeanDataFrame is abtract)
189
* @brief viewParent GNEViewParent in which this GNEFrame is placed
190
* @brief viewNet GNEViewNet that uses this GNEFrame
191
*/
192
GNEMeanDataFrame(GNEViewParent* viewParent, GNEViewNet* viewNet);
193
194
/// @brief Destructor
195
~GNEMeanDataFrame();
196
197
/// @brief show Frame
198
void show();
199
200
/// @brief hide Frame
201
void hide();
202
203
/// @brief function called after set a valid attribute in AttributeCreator/AttributeEditor/ParametersEditor/...
204
void attributeUpdated(SumoXMLAttr attribute);
205
206
/// @brief function called after undo/redo in the current frame
207
void updateFrameAfterUndoRedo();
208
209
protected:
210
/// @brief meanData type selector
211
MeanDataTypeSelector* myMeanDataTypeSelector = nullptr;
212
213
/// @brief meanData editor
214
MeanDataEditor* myMeanDataEditor = nullptr;
215
216
/// @brief meanData selector
217
MeanDataSelector* myMeanDataSelector = nullptr;
218
219
/// @brief meanData attributes editor
220
GNEAttributesEditor* myMeanDataAttributesEditor = nullptr;
221
222
private:
223
/// @brief Invalidated copy constructor.
224
GNEMeanDataFrame(const GNEMeanDataFrame&) = delete;
225
226
/// @brief Invalidated assignment operator.
227
GNEMeanDataFrame& operator=(const GNEMeanDataFrame&) = delete;
228
};
229
230