Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
GNEVClassesDialog.cpp
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// Dialog for edit allow VClass attribute
19/****************************************************************************/
20
25
26#include "GNEVClassesDialog.h"
27
28// ===========================================================================
29// FOX callback mapping
30// ===========================================================================
31
35
42
43// Object implementation
44FXIMPLEMENT(GNEVClassesDialog::VClassRow, FXHorizontalFrame, VClassRowMap, ARRAYNUMBER(VClassRowMap))
45FXIMPLEMENT(GNEVClassesDialog, GNEDialog, GNEVClassesDialogMap, ARRAYNUMBER(GNEVClassesDialogMap))
46
47// ===========================================================================
48// member method definitions
49// ===========================================================================
50
51// ---------------------------------------------------------------------------
52// GNEVClassesDialog::VClassRow - methods
53// ---------------------------------------------------------------------------
54
55GNEVClassesDialog::VClassRow::VClassRow(FXVerticalFrame* contentsFrame, SUMOVehicleClass vClass,
56 GUIIcon vClassIcon, const std::string& description) :
57 FXHorizontalFrame(contentsFrame, GUIDesignAuxiliarHorizontalFrame),
58 myVClassString(getVehicleClassNames(vClass)) {
59 // add frame for vehicle icons
60 FXLabel* labelVehicleIcon = new FXLabel(this, "", GUIIconSubSys::getIcon(vClassIcon), GUIDesignLabelIcon64x32Thicked);
61 labelVehicleIcon->setBackColor(FXRGBA(255, 255, 255, 255));
62 // create frame for information and button
63 FXVerticalFrame* buttonAndInformationFrame = new FXVerticalFrame(this, GUIDesignAuxiliarHorizontalFrame);
64 FXHorizontalFrame* buttonAndStatusFrame = new FXHorizontalFrame(buttonAndInformationFrame, GUIDesignAuxiliarHorizontalFrame);
65 // create button for enable/disable vehicle class
66 myVClassButton = GUIDesigns::buildFXButton(buttonAndStatusFrame, "", "", "", GUIIconSubSys::getIcon(GUIIcon::EMPTY),
68 // create label for vehicle class name
69 new FXLabel(buttonAndStatusFrame, myVClassString.c_str(), nullptr, GUIDesignLabelThick(JUSTIFY_LEFT));
70 // create label for description of vehicle
71 new FXLabel(buttonAndInformationFrame, description.c_str(), nullptr, GUIDesignLabelThick(JUSTIFY_LEFT));
72}
73
74
78
79
80const std::string&
82 return myVClassString;
83}
84
85
86void
88 if (enabled) {
89 myVClassButton->setIcon(GUIIconSubSys::getIcon(GUIIcon::ACCEPT));
90 } else {
91 myVClassButton->setIcon(GUIIconSubSys::getIcon(GUIIcon::CANCEL));
92 }
93}
94
95
96bool
100
101
102long
104 if (myVClassButton->getIcon() == GUIIconSubSys::getIcon(GUIIcon::ACCEPT)) {
105 setVClassButtonStatus(false);
106 } else {
107 setVClassButtonStatus(true);
108 }
109 return 1;
110}
111
112// ---------------------------------------------------------------------------
113// GNEVClassesDialog - methods
114// ---------------------------------------------------------------------------
115
117 const std::string originalVClasses) :
118 GNEDialog(applicationWindow, TLF("Edit vClasses of attribute '%'", toString(attr)), GUIIcon::GREENVEHICLE,
120 myOriginalVClasses(originalVClasses),
121 myEditedVClasses(originalVClasses) {
122 // build dialog
123 builder();
124}
125
126
128 SumoXMLAttr attr, const std::string originalVClasses) :
129 GNEDialog(applicationWindow, parentDialog, TLF("Edit vClasses of attribute '%'", toString(attr)), GUIIcon::GREENVEHICLE,
130 DialogType::VCLASS, GNEDialog::Buttons::ACCEPT_CANCEL_RESET, OpenType::MODAL, ResizeMode::STATIC),
131 myOriginalVClasses(originalVClasses),
132 myEditedVClasses(originalVClasses) {
133 // build dialog
134 builder();
135}
136
137
140
141
142void
144 if (dialogArgument->getCustomAction() == "allVehicles") {
145 onCmdSelectAll(nullptr, 0, nullptr);
146 } else if (dialogArgument->getCustomAction() == "disallowAll") {
147 onCmdUnselectAll(nullptr, 0, nullptr);
148 } else if (dialogArgument->getCustomAction() == "onlyRoadVehicles") {
149 onCmdSelectOnlyRoad(nullptr, 0, nullptr);
150 } else if (dialogArgument->getCustomAction() == "onlyRailVehicles") {
151 onCmdSelectOnlyRail(nullptr, 0, nullptr);
152 } else if (SumoVehicleClassStrings.hasString(dialogArgument->getCustomAction())) {
153 myVClassMap[getVehicleClassID(dialogArgument->getCustomAction())]->onCmdToggleVClass(nullptr, 0, nullptr);
154 } else {
155 WRITE_ERROR("Invalid dialog argument " + dialogArgument->getCustomAction() + " used in GNEVClassesDialog::runInternalTest");
156 }
157}
158
159
160std::string
164
165
166long
167GNEVClassesDialog::onCmdSelectAll(FXObject*, FXSelector, void*) {
168 // change all icons to accept
169 for (const auto& vClass : myVClassMap) {
170 vClass.second->setVClassButtonStatus(true);
171 }
172 return 1;
173}
174
175
176long
177GNEVClassesDialog::onCmdUnselectAll(FXObject*, FXSelector, void*) {
178 // change all icons to cancel
179 for (const auto& vClass : myVClassMap) {
180 vClass.second->setVClassButtonStatus(false);
181 }
182 return 1;
183}
184
185
186long
187GNEVClassesDialog::onCmdSelectOnlyRoad(FXObject*, FXSelector, void*) {
188 // change all non-road icons to disallow, and allow for the rest
189 for (const auto& vClass : myVClassMap) {
190 if ((vClass.first & (SVC_PEDESTRIAN | SVC_NON_ROAD)) == 0) {
191 vClass.second->setVClassButtonStatus(true);
192 } else {
193 vClass.second->setVClassButtonStatus(false);
194 }
195 }
196 return 1;
197}
198
199
200long
201GNEVClassesDialog::onCmdSelectOnlyRail(FXObject*, FXSelector, void*) {
202 // change all non-road icons to disallow, and allow for the rest
203 for (const auto& vClass : myVClassMap) {
204 if ((vClass.first & SVC_RAIL_CLASSES) != 0) {
205 vClass.second->setVClassButtonStatus(true);
206 } else {
207 vClass.second->setVClassButtonStatus(false);
208 }
209 }
210 return 1;
211}
212
213
214long
215GNEVClassesDialog::onCmdAccept(FXObject*, FXSelector, void*) {
216 bool allSelected = true;
217 // clear allow and disallow VClasses
218 std::vector<std::string> allowedVehicles;
219 for (const auto& vClass : myVClassMap) {
220 // check if vehicle is allowed depending on the Icon
221 if (vClass.second->isVClassButtonEnabled()) {
222 allowedVehicles.push_back(vClass.second->getVClassString());
223 } else {
224 allSelected = false;
225 }
226 }
227 if (allSelected) {
228 myEditedVClasses = "all";
229 } else {
230 myEditedVClasses = joinToString(allowedVehicles, " ");
231 }
232 // Stop Modal if we have a different classes from original
234 return closeDialogAccepting();
235 } else {
236 return closeDialogCanceling();
237 }
238}
239
240
241long
242GNEVClassesDialog::onCmdCancel(FXObject*, FXSelector, void*) {
243 // reset vClasses
245 // cancel
246 return closeDialogCanceling();
247}
248
249
250long
251GNEVClassesDialog::onCmdReset(FXObject*, FXSelector, void*) {
252 // reset vClasses
254 // continue depending of allow
255 if (myEditedVClasses == "all") {
256 // iterate over myVClassMap and set all icons as true
257 for (const auto& vClass : myVClassMap) {
258 vClass.second->setVClassButtonStatus(true);
259 }
260 } else {
261 // declare string vector for saving all vclasses
262 const std::vector<std::string>& allowStringVector = StringTokenizer(myEditedVClasses).getVector();
263 const std::set<std::string> allowSet(allowStringVector.begin(), allowStringVector.end());
264 // iterate over myVClassMap and set icons
265 for (const auto& vClass : myVClassMap) {
266 if (allowSet.count(getVehicleClassNames(vClass.first)) > 0) {
267 vClass.second->setVClassButtonStatus(true);
268 } else {
269 vClass.second->setVClassButtonStatus(false);
270 }
271 }
272 }
273 return 1;
274}
275
276
277void
279 // label for selection options
280 new FXLabel(getContentFrame(), TL("Selection options"), nullptr, GUIDesignLabel(JUSTIFY_NORMAL));
281 // horizontal frame uniform for options
282 FXHorizontalFrame* optionsFrame = new FXHorizontalFrame(getContentFrame(), GUIDesignAuxiliarHorizontalFrameUniform);
283 // allow all
285 new FXLabel(optionsFrame, TL("Allow all vehicles"), nullptr, GUIDesignLabelThick(JUSTIFY_LEFT));
286 // only road
288 new FXLabel(optionsFrame, TL("Allow only road vehicles"), nullptr, GUIDesignLabelThick(JUSTIFY_LEFT));
289 // only rail
291 new FXLabel(optionsFrame, TL("Allow only rail vehicles"), nullptr, GUIDesignLabelThick(JUSTIFY_LEFT));
292 // disallow all
294 new FXLabel(optionsFrame, TL("Disallow all vehicles"), nullptr, GUIDesignLabelThick(JUSTIFY_LEFT));
295 // label for select vClasses
296 new FXLabel(getContentFrame(), TL("Select vClasses"), nullptr, GUIDesignLabel(JUSTIFY_NORMAL));
297 // Create frame for vehicles's columns
298 FXHorizontalFrame* myVehiclesFrame = new FXHorizontalFrame(getContentFrame(), GUIDesignContentsFrame);
299 // create left frame and fill it
300 FXVerticalFrame* vehiclesLeftFrame = new FXVerticalFrame(myVehiclesFrame, GUIDesignAuxiliarFrame);
301 myVClassMap[SVC_PASSENGER] = new VClassRow(vehiclesLeftFrame, SVC_PASSENGER, GUIIcon::VCLASS_PASSENGER, TL("Default vehicle class"));
302 myVClassMap[SVC_PRIVATE] = new VClassRow(vehiclesLeftFrame, SVC_PRIVATE, GUIIcon::VCLASS_PRIVATE, TL("A passenger car assigned for private use"));
303 myVClassMap[SVC_TAXI] = new VClassRow(vehiclesLeftFrame, SVC_TAXI, GUIIcon::VCLASS_TAXI, TL("Vehicle for hire with a driver"));
304 myVClassMap[SVC_BUS] = new VClassRow(vehiclesLeftFrame, SVC_BUS, GUIIcon::VCLASS_BUS, TL("Urban line traffic"));
305 myVClassMap[SVC_COACH] = new VClassRow(vehiclesLeftFrame, SVC_COACH, GUIIcon::VCLASS_COACH, TL("Overland transport"));
306 myVClassMap[SVC_DELIVERY] = new VClassRow(vehiclesLeftFrame, SVC_DELIVERY, GUIIcon::VCLASS_DELIVERY, TL("Vehicles specialized in delivering goods"));
307 myVClassMap[SVC_TRUCK] = new VClassRow(vehiclesLeftFrame, SVC_TRUCK, GUIIcon::VCLASS_TRUCK, TL("Vehicle designed to transport cargo"));
308 myVClassMap[SVC_TRAILER] = new VClassRow(vehiclesLeftFrame, SVC_TRAILER, GUIIcon::VCLASS_TRAILER, TL("Truck with trailer"));
309 myVClassMap[SVC_EMERGENCY] = new VClassRow(vehiclesLeftFrame, SVC_EMERGENCY, GUIIcon::VCLASS_EMERGENCY, TL("Vehicle designated to respond to an emergency"));
310 myVClassMap[SVC_MOTORCYCLE] = new VClassRow(vehiclesLeftFrame, SVC_MOTORCYCLE, GUIIcon::VCLASS_MOTORCYCLE, TL("Two- or three-wheeled motor vehicle"));
311 myVClassMap[SVC_MOPED] = new VClassRow(vehiclesLeftFrame, SVC_MOPED, GUIIcon::VCLASS_MOPED, TL("Motorcycle not allowed in motorways"));
312 // create center frame and fill it
313 FXVerticalFrame* vehiclesCenterFrame = new FXVerticalFrame(myVehiclesFrame, GUIDesignAuxiliarFrame);
314 myVClassMap[SVC_BICYCLE] = new VClassRow(vehiclesCenterFrame, SVC_BICYCLE, GUIIcon::VCLASS_BICYCLE, TL("Human-powered, pedal-driven vehicle"));
315 myVClassMap[SVC_SCOOTER] = new VClassRow(vehiclesCenterFrame, SVC_SCOOTER, GUIIcon::VCLASS_SCOOTER, TL("An electric scooter or a kick scooter"));
316 myVClassMap[SVC_PEDESTRIAN] = new VClassRow(vehiclesCenterFrame, SVC_PEDESTRIAN, GUIIcon::VCLASS_PEDESTRIAN, TL("Person traveling on foot"));
317 myVClassMap[SVC_WHEELCHAIR] = new VClassRow(vehiclesCenterFrame, SVC_WHEELCHAIR, GUIIcon::VCLASS_WHEELCHAIR, TL("A mobility impaired person"));
318 myVClassMap[SVC_TRAM] = new VClassRow(vehiclesCenterFrame, SVC_TRAM, GUIIcon::VCLASS_TRAM, TL("Rail vehicle which runs on tracks"));
319 myVClassMap[SVC_RAIL_ELECTRIC] = new VClassRow(vehiclesCenterFrame, SVC_RAIL_ELECTRIC, GUIIcon::VCLASS_RAIL_ELECTRIC, TL("Rail electric vehicle"));
320 myVClassMap[SVC_RAIL_FAST] = new VClassRow(vehiclesCenterFrame, SVC_RAIL_FAST, GUIIcon::VCLASS_RAIL_FAST, TL("High-speed rail vehicle"));
321 myVClassMap[SVC_RAIL_URBAN] = new VClassRow(vehiclesCenterFrame, SVC_RAIL_URBAN, GUIIcon::VCLASS_RAIL_URBAN, TL("Heavier than tram"));
322 myVClassMap[SVC_RAIL] = new VClassRow(vehiclesCenterFrame, SVC_RAIL, GUIIcon::VCLASS_RAIL, TL("Heavy rail vehicle"));
323 myVClassMap[SVC_CABLE_CAR] = new VClassRow(vehiclesCenterFrame, SVC_CABLE_CAR, GUIIcon::VCLASS_CABLE_CAR, TL("A conveyance suspended on a cable"));
324 myVClassMap[SVC_SUBWAY] = new VClassRow(vehiclesCenterFrame, SVC_SUBWAY, GUIIcon::VCLASS_SUBWAY, TL("A railway that mostly runs underground"));
325 // create right frame and fill it (8 vehicles)
326 FXVerticalFrame* vehiclesRightFrame = new FXVerticalFrame(myVehiclesFrame, GUIDesignAuxiliarFrame);
327 myVClassMap[SVC_E_VEHICLE] = new VClassRow(vehiclesRightFrame, SVC_E_VEHICLE, GUIIcon::VCLASS_EVEHICLE, TL("Future electric mobility vehicles"));
328 myVClassMap[SVC_ARMY] = new VClassRow(vehiclesRightFrame, SVC_ARMY, GUIIcon::VCLASS_ARMY, TL("Vehicle designed for military forces"));
329 myVClassMap[SVC_SHIP] = new VClassRow(vehiclesRightFrame, SVC_SHIP, GUIIcon::VCLASS_SHIP, TL("Basic class for navigating waterway"));
330 myVClassMap[SVC_AUTHORITY] = new VClassRow(vehiclesRightFrame, SVC_AUTHORITY, GUIIcon::VCLASS_AUTHORITY, TL("Vehicle of a governmental security agency"));
331 myVClassMap[SVC_VIP] = new VClassRow(vehiclesRightFrame, SVC_VIP, GUIIcon::VCLASS_VIP, TL("A civilian security armored car used by VIPs"));
332 myVClassMap[SVC_HOV] = new VClassRow(vehiclesRightFrame, SVC_HOV, GUIIcon::VCLASS_HOV, TL("High-Occupancy Vehicle (two or more passengers)"));
333 myVClassMap[SVC_CONTAINER] = new VClassRow(vehiclesRightFrame, SVC_CONTAINER, GUIIcon::VCLASS_CONTAINER, TL("A transport container"));
334 myVClassMap[SVC_AIRCRAFT] = new VClassRow(vehiclesRightFrame, SVC_AIRCRAFT, GUIIcon::VCLASS_AIRCRAFT, TL("An airplane"));
335 myVClassMap[SVC_DRONE] = new VClassRow(vehiclesRightFrame, SVC_DRONE, GUIIcon::VCLASS_DRONE, TL("A small unmanned robot"));
336 myVClassMap[SVC_CUSTOM1] = new VClassRow(vehiclesRightFrame, SVC_CUSTOM1, GUIIcon::VCLASS_CUSTOM1, TL("Reserved for user-defined semantics"));
337 myVClassMap[SVC_CUSTOM2] = new VClassRow(vehiclesRightFrame, SVC_CUSTOM2, GUIIcon::VCLASS_CUSTOM2, TL("Reserved for user-defined semantics"));
338 // reset dialog
339 onCmdReset(nullptr, 0, nullptr);
340 // open modal dialog
341 openDialog();
342}
343
344/****************************************************************************/
DialogType
FXDEFMAP(GNEVClassesDialog::VClassRow) VClassRowMap[]
@ MID_GNE_ALLOWVCLASSES_SELECTALL
select all vehicles
@ MID_GNE_ALLOWVCLASSES_ONLY_ROAD
select only non road vehicles
@ MID_GNE_ALLOWVCLASSES_UNSELECTALL
unselect all vehicles
@ MID_GNE_ALLOWVCLASSES_ONLY_RAIL
select only rail vehicles
@ MID_GNE_ALLOWVCLASSES_TOGGLE
select/unselect single vehicle
#define GUIDesignButtonIcon
button only with icon
Definition GUIDesigns.h:109
#define GUIDesignLabelIcon64x32Thicked
label ticked filled used for VClasses. It uses icons of 64x32 pixels
Definition GUIDesigns.h:272
#define GUIDesignContentsFrame
design for the main content frame of every frame/dialog with padding and spacing
Definition GUIDesigns.h:406
#define GUIDesignAuxiliarHorizontalFrame
design for auxiliar (Without borders) horizontal frame used to pack another frames
Definition GUIDesigns.h:430
#define GUIDesignLabel(justify)
Definition GUIDesigns.h:245
#define GUIDesignAuxiliarHorizontalFrameUniform
design for auxiliar (Without borders) horizontal frame used to pack another frames uniform
Definition GUIDesigns.h:436
#define GUIDesignLabelThick(justify)
label extended over frame with thick and with text justify to left
Definition GUIDesigns.h:251
#define GUIDesignAuxiliarFrame
design for auxiliar (Without borders) frame extended in all directions
Definition GUIDesigns.h:409
GUIIcon
An enumeration of icons used by the gui applications.
Definition GUIIcons.h:33
@ VCLASS_TRAILER
@ VCLASS_PASSENGER
@ VCLASS_BICYCLE
@ VCLASS_RAIL_FAST
@ VCLASS_AIRCRAFT
@ VCLASS_CUSTOM2
@ GREENVEHICLE
@ VCLASS_MOTORCYCLE
@ VCLASS_COACH
@ VCLASS_AUTHORITY
@ VCLASS_SCOOTER
@ VCLASS_TRUCK
@ VCLASS_MOPED
@ VCLASS_PEDESTRIAN
@ VCLASS_PRIVATE
@ VCLASS_CABLE_CAR
@ VCLASS_SUBWAY
@ VCLASS_CONTAINER
@ VCLASS_CUSTOM1
@ VCLASS_DELIVERY
@ VCLASS_DRONE
@ VCLASS_RAIL_ELECTRIC
@ VCLASS_WHEELCHAIR
@ VCLASS_EMERGENCY
@ VCLASS_RAIL_URBAN
@ VCLASS_EVEHICLE
#define WRITE_ERROR(msg)
Definition MsgHandler.h:295
#define TL(string)
Definition MsgHandler.h:304
#define TLF(string,...)
Definition MsgHandler.h:306
SUMOVehicleClass getVehicleClassID(const std::string &name)
Returns the class id of the abstract class given by its name.
const std::string & getVehicleClassNames(SVCPermissions permissions, bool expand)
Returns the ids of the given classes, divided using a ' '.
StringBijection< SUMOVehicleClass > SumoVehicleClassStrings(sumoVehicleClassStringInitializer, SVC_CUSTOM2, false)
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
@ SVC_SHIP
is an arbitrary ship
@ SVC_PRIVATE
private vehicles
@ SVC_VIP
vip vehicles
@ SVC_HOV
vehicle is a HOV
@ SVC_TRUCK
vehicle is a large transport vehicle
@ SVC_CUSTOM2
is a user-defined type
@ SVC_WHEELCHAIR
@ SVC_RAIL
vehicle is a not electrified rail
@ SVC_RAIL_CLASSES
classes which drive on tracks
@ SVC_COACH
vehicle is a coach
@ SVC_CABLE_CAR
@ SVC_PASSENGER
vehicle is a passenger car (a "normal" car)
@ SVC_BICYCLE
vehicle is a bicycle
@ SVC_CONTAINER
@ SVC_SCOOTER
@ SVC_RAIL_FAST
vehicle that is allowed to drive on high-speed rail tracks
@ SVC_TRAILER
vehicle is a large transport vehicle
@ SVC_CUSTOM1
is a user-defined type
@ SVC_ARMY
army vehicles
@ SVC_DRONE
@ SVC_RAIL_ELECTRIC
rail vehicle that requires electrified tracks
@ SVC_NON_ROAD
@ SVC_DELIVERY
vehicle is a small delivery vehicle
@ SVC_RAIL_URBAN
vehicle is a city rail
@ SVC_MOTORCYCLE
vehicle is a motorcycle
@ SVC_EMERGENCY
public emergency vehicles
@ SVC_MOPED
vehicle is a moped
@ SVC_AUTHORITY
authorities vehicles
@ SVC_TRAM
vehicle is a light rail
@ SVC_TAXI
vehicle is a taxi
@ SVC_BUS
vehicle is a bus
@ SVC_E_VEHICLE
is an electric vehicle
@ SVC_AIRCRAFT
@ SVC_SUBWAY
@ SVC_PEDESTRIAN
pedestrian
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
std::string joinToString(const std::vector< T > &v, const T_BETWEEN &between, std::streamsize accuracy=gPrecision)
Definition ToString.h:289
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition ToString.h:46
FXVerticalFrame * getContentFrame() const
get content frame
void openDialog(FXWindow *focusableElement=nullptr)
open dialog
long closeDialogAccepting()
close dialog accepting the changes
OpenType
Open dialog type.
Definition GNEDialog.h:58
long closeDialogCanceling()
close dialog declining the changes
long onCmdToggleVClass(FXObject *, FXSelector, void *)
event when user toogle the vClass button
bool isVClassButtonEnabled() const
check if vClass button is enabled
void setVClassButtonStatus(const bool enabled)
set vClass button status
const std::string & getVClassString() const
get vclass in string format
long onCmdSelectAll(FXObject *, FXSelector, void *)
event when user press select all VClasses button
std::string myEditedVClasses
edited vClasses
const std::string myOriginalVClasses
FOX need this.
long onCmdSelectOnlyRoad(FXObject *, FXSelector, void *)
event when user press select only road button
long onCmdReset(FXObject *, FXSelector, void *)
event after press reset button
long onCmdAccept(FXObject *, FXSelector, void *)
event after press accept button
GNEVClassesDialog(GNEApplicationWindow *applicationWindow, SumoXMLAttr attr, const std::string originalVClasses)
Constructor.
std::map< SUMOVehicleClass, VClassRow * > myVClassMap
map with the buttons for every VClass
std::string getModifiedVClasses() const
get vClasses modified by this dialog
long onCmdSelectOnlyRail(FXObject *, FXSelector, void *)
event when user press select only rail button
void runInternalTest(const InternalTestStep::DialogArgument *dialogArgument)
run internal test
long onCmdUnselectAll(FXObject *, FXSelector, void *)
event when user press unselect all VClasses button
long onCmdCancel(FXObject *, FXSelector, void *)
event after press cancel button
static FXButton * buildFXButton(FXComposite *p, const std::string &text, const std::string &tip, const std::string &help, FXIcon *ic, FXObject *tgt, FXSelector sel, FXuint opts=BUTTON_NORMAL, FXint x=0, FXint y=0, FXint w=0, FXint h=0, FXint pl=DEFAULT_PAD, FXint pr=DEFAULT_PAD, FXint pt=DEFAULT_PAD, FXint pb=DEFAULT_PAD)
build button
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
dialog arguments, used for certain modal dialogs that can not be edited using tab
const std::string & getCustomAction() const
get custom action
std::vector< std::string > getVector()
return vector of strings
Definition json.hpp:4471