Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
GNEDistributionFrame.h
Go to the documentation of this file.
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/****************************************************************************/
18// The Widget for edit distribution elements
19/****************************************************************************/
20#pragma once
21#include <config.h>
22
27
28// ===========================================================================
29// class definitions
30// ===========================================================================
31
34class MFXComboBoxIcon;
36
37// ===========================================================================
38// class definitions
39// ===========================================================================
40
42
43public:
44 // ===========================================================================
45 // class declaration
46 // ===========================================================================
47
50
51 // ===========================================================================
52 // class DistributionEditor
53 // ===========================================================================
54
58
59
61
62 public:
64 DistributionEditor(GNEFrame* frameParent, SumoXMLTag distributionTag, GUIIcon icon);
65
68
71
74
76 long onCmdCreateDistribution(FXObject*, FXSelector, void*);
77
79 long onCmdDeleteDistribution(FXObject*, FXSelector, void*);
80
82 long onUpdDeleteDistribution(FXObject* sender, FXSelector, void*);
83
85
86 protected:
88 FOX_CONSTRUCTOR(DistributionEditor)
89
90 private:
93
96
99
102
105
108
110 DistributionEditor& operator=(const DistributionEditor& src) = delete;
111 };
112
113 // ===========================================================================
114 // class DistributionSelector
115 // ===========================================================================
116
120
121
123
124 public:
126 DistributionSelector(GNEFrame* frameParent);
127
130
132 void setDistribution(GNEDemandElement* distribution);
133
135 GNEDemandElement* getCurrentDistribution() const;
136
138 void refreshDistributionIDs();
139
141 void refreshDistributionSelector();
142
145
147 long onCmdSelectDistribution(FXObject*, FXSelector, void*);
148
150 long onCmdUpdateDistribution(FXObject* sender, FXSelector, void*);
151
153
154 protected:
156 FOX_CONSTRUCTOR(DistributionSelector)
157
159 std::map<std::string, GNEDemandElement*> fillDistributionComboBox();
160
161 private:
164
166 DistributionEditor* myDistributionEditor = nullptr;
167
169 GNEAttributesEditor* myAttributesEditor = nullptr;
170
172 DistributionValuesEditor* myDistributionValuesEditor = nullptr;
173
175 MFXComboBoxIcon* myDistributionsComboBox = nullptr;
176
178 GNEDemandElement* myCurrentDistribution = nullptr;
179
182
184 DistributionSelector& operator=(const DistributionSelector& src) = delete;
185 };
186
187 // ===========================================================================
188 // class DistributionRow
189 // ===========================================================================
190
191 class DistributionRow : protected FXHorizontalFrame {
194
195 public:
197 DistributionRow(DistributionValuesEditor* attributeEditorParent, GNEDemandElement* distributionReference);
198
200 void destroy();
201
203 GNEDemandElement* getDistributionReference() const;
204
206 MFXButtonTooltip* getDeleteRowButton() const;
207
210
212 long onCmdSetProbability(FXObject*, FXSelector, void*);
213
215
216 protected:
218 FOX_CONSTRUCTOR(DistributionRow)
219
220 private:
223
225 GNEDemandElement* myDistributionReference = nullptr;
226
228 MFXButtonTooltip* myDeleteRowButton = nullptr;
229
231 FXLabel* myIconLabel = nullptr;
232
234 MFXTextFieldIcon* myIDTextField = nullptr;
235
237 MFXTextFieldIcon* myProbabilityTextField = nullptr;
238
241
244 };
245
246 // ===========================================================================
247 // class DistributionValuesEditor
248 // ===========================================================================
249
253
254
256
257 public:
259 DistributionValuesEditor(GNEFrame* frameParent, DistributionEditor* distributionEditor,
260 DistributionSelector* distributionSelector,
261 GNEAttributesEditor* attributesEditor);
262
264 void showDistributionValuesEditor();
265
267 void hideDistributionValuesEditor();
268
270 void refreshRows();
271
273 GNEFrame* getFrameParent() const;
274
277
279 long onCmdAddRow(FXObject*, FXSelector, void*);
280
282 long onCmdRemoveRow(FXObject* obj, FXSelector, void*);
283
285
286 protected:
288 FOX_CONSTRUCTOR(DistributionValuesEditor)
289
291 void updateSumLabel();
292
293 private:
296
298 DistributionEditor* myDistributionEditor;
299
302
304 GNEAttributesEditor* myAttributesEditor;
305
307 std::vector<DistributionRow*> myDistributionRows;
308
310 FXHorizontalFrame* myBotFrame = nullptr;
311
313 MFXButtonTooltip* myAddButton = nullptr;
314
316 FXLabel* mySumLabel = nullptr;
317
320
322 DistributionValuesEditor& operator=(const DistributionValuesEditor& src) = delete;
323 };
324};
GUIIcon
An enumeration of icons used by the gui applications.
Definition GUIIcons.h:33
SumoXMLTag
Numbers representing SUMO-XML - element names.
long onCmdDeleteDistribution(FXObject *, FXSelector, void *)
Called when "Delete distribution" button is clicked.
SumoXMLTag getDistributionTag() const
get distribution tag
MFXButtonTooltip * myCreateDistributionButton
"create Distribution" button
MFXButtonTooltip * myDeleteDistributionButton
"delete Distribution" button
SumoXMLTag myDistributionTag
@briuef distribution tag
long onUpdDeleteDistribution(FXObject *sender, FXSelector, void *)
Called when "Delete distribution" button is updated.
long onCmdCreateDistribution(FXObject *, FXSelector, void *)
Called when "create distribution" button is clicked.
DistributionSelector * myDistributionSelector
distribution selector
DistributionRow & operator=(const DistributionRow &src)=delete
Invalidated assignment operator.
DistributionRow(const DistributionRow &)=delete
Invalidated copy constructor.
DistributionValuesEditor * myDistributionValuesEditorParent
FOX need this.
MFXGroupBoxModule (based on FXGroupBox)
Definition json.hpp:4471
every row value