Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
GNETypeFrame.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-2023 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 Type elements (vehicle, person and container)
19/****************************************************************************/
20#include <config.h>
21
22#include <netedit/GNENet.h>
23#include <netedit/GNEUndoList.h>
24#include <netedit/GNEViewNet.h>
31
32#include "GNETypeFrame.h"
33
34
35// ===========================================================================
36// FOX callback mapping
37// ===========================================================================
38
42
48
49// Object implementation
50FXIMPLEMENT(GNETypeFrame::TypeSelector, MFXGroupBoxModule, typeSelectorMap, ARRAYNUMBER(typeSelectorMap))
51FXIMPLEMENT(GNETypeFrame::TypeEditor, MFXGroupBoxModule, typeEditorMap, ARRAYNUMBER(typeEditorMap))
52
53// ===========================================================================
54// method definitions
55// ===========================================================================
56
57// ---------------------------------------------------------------------------
58// GNETypeFrame::TypeSelector - methods
59// ---------------------------------------------------------------------------
60
62 MFXGroupBoxModule(typeFrameParent, TL("Current Type")),
63 myTypeFrameParent(typeFrameParent),
64 myCurrentType(nullptr) {
65 // Create FXComboBox
66 myTypeComboBox = new MFXComboBoxIcon(getCollapsableFrame(), GUIDesignComboBoxNCol, true, this, MID_GNE_SET_TYPE, GUIDesignComboBox);
67 // add default Types (always first)
68 for (const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(SUMO_TAG_VTYPE)) {
69 if (DEFAULT_VTYPES.count(vType->getID()) != 0) {
70 myTypeComboBox->appendIconItem(vType->getID().c_str(), vType->getACIcon(), FXRGB(255, 255, 200));
71 }
72 }
73 // fill myTypeMatchBox with list of VTypes IDs
74 for (const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(SUMO_TAG_VTYPE)) {
75 if (DEFAULT_VTYPES.count(vType->getID()) == 0) {
76 myTypeComboBox->appendIconItem(vType->getID().c_str(), vType->getACIcon());
77 }
78 }
79 // set DEFAULT_VEHTYPE as default VType
80 myCurrentType = myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveDemandElement(SUMO_TAG_VTYPE, DEFAULT_VTYPE_ID);
81 // Set visible items
82 if (myTypeComboBox->getNumItems() <= 20) {
83 myTypeComboBox->setNumVisible((int)myTypeComboBox->getNumItems());
84 } else {
85 myTypeComboBox->setNumVisible(20);
86 }
87 // TypeSelector is always shown
88 show();
89}
90
91
93
94
99
100
101void
103 myCurrentType = vType;
104 refreshTypeSelector();
105}
106
107
108void
110 bool valid = false;
111 // clear items
112 myTypeComboBox->clearItems();
113 // add default Vehicle an Bike types in the first and second positions
114 for (const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(SUMO_TAG_VTYPE)) {
115 if (DEFAULT_VTYPES.count(vType->getID()) != 0) {
116 myTypeComboBox->appendIconItem(vType->getID().c_str(), vType->getACIcon(), FXRGB(255, 255, 200));
117 }
118 }
119 // fill myTypeMatchBox with list of VTypes IDs sorted by ID
120 std::map<std::string, GNEDemandElement*> types;
121 for (const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(SUMO_TAG_VTYPE)) {
122 if (DEFAULT_VTYPES.count(vType->getID()) == 0) {
123 types[vType->getID()] = vType;
124 }
125 }
126 for (const auto& vType : types) {
127 myTypeComboBox->appendIconItem(vType.first.c_str(), vType.second->getACIcon());
128 }
129 // Set visible items
130 if (myTypeComboBox->getNumItems() <= 20) {
131 myTypeComboBox->setNumVisible((int)myTypeComboBox->getNumItems());
132 } else {
133 myTypeComboBox->setNumVisible(20);
134 }
135 // make sure that tag is in myTypeMatchBox
136 if (myCurrentType) {
137 for (int i = 0; i < (int)myTypeComboBox->getNumItems(); i++) {
138 if (myTypeComboBox->getItem(i).text() == myCurrentType->getID()) {
139 myTypeComboBox->setCurrentItem(i);
140 valid = true;
141 }
142 }
143 }
144 // Check that give vType type is valid
145 if (!valid) {
146 // set DEFAULT_VEHTYPE as default VType
147 myCurrentType = myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveDemandElement(SUMO_TAG_VTYPE, DEFAULT_VTYPE_ID);
148 // refresh myTypeMatchBox again
149 for (int i = 0; i < (int)myTypeComboBox->getNumItems(); i++) {
150 if (myTypeComboBox->getItem(i).text() == myCurrentType->getID()) {
151 myTypeComboBox->setCurrentItem(i);
152 }
153 }
154 }
155 // refresh vehicle type editor module
156 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
157 // set myCurrentType as inspected element
158 myTypeFrameParent->getViewNet()->setInspectedAttributeCarriers({myCurrentType});
159 // show modules
160 myTypeFrameParent->myTypeAttributesEditor->showAttributeEditorModule(false);
161 myTypeFrameParent->myAttributesEditorExtended->showAttributesEditorExtendedModule();
162 myTypeFrameParent->myParametersEditor->refreshParametersEditor();
163}
164
165
166void
168 if (myCurrentType) {
169 myTypeComboBox->setIconItem(myTypeComboBox->getCurrentItem(), myCurrentType->getID().c_str(), myCurrentType->getACIcon());
170 }
171}
172
173
174long
175GNETypeFrame::TypeSelector::onCmdSelectItem(FXObject*, FXSelector, void*) {
176 // Check if value of myTypeMatchBox correspond of an allowed additional tags
177 for (const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(SUMO_TAG_VTYPE)) {
178 if (vType->getID() == myTypeComboBox->getText().text()) {
179 // set pointer
180 myCurrentType = vType;
181 // set color of myTypeMatchBox to black (valid)
182 myTypeComboBox->setTextColor(FXRGB(0, 0, 0));
183 // refresh vehicle type editor module
184 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
185 // set myCurrentType as inspected element
186 myTypeFrameParent->getViewNet()->setInspectedAttributeCarriers({myCurrentType});
187 // show modules if selected item is valid
188 myTypeFrameParent->myTypeAttributesEditor->showAttributeEditorModule(false);
189 myTypeFrameParent->myAttributesEditorExtended->showAttributesEditorExtendedModule();
190 myTypeFrameParent->myParametersEditor->refreshParametersEditor();
191 // Write Warning in console if we're in testing mode
192 WRITE_DEBUG(("Selected item '" + myTypeComboBox->getText() + "' in TypeSelector").text());
193 // update viewNet
194 myTypeFrameParent->getViewNet()->updateViewNet();
195 return 1;
196 }
197 }
198 myCurrentType = nullptr;
199 // refresh vehicle type editor module
200 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
201 // hide all modules if selected item isn't valid
202 myTypeFrameParent->myTypeAttributesEditor->hideAttributesEditorModule();
203 myTypeFrameParent->myAttributesEditorExtended->hideAttributesEditorExtendedModule();
204 // set color of myTypeMatchBox to red (invalid)
205 myTypeComboBox->setTextColor(FXRGB(255, 0, 0));
206 // Write Warning in console if we're in testing mode
207 WRITE_DEBUG("Selected invalid item in TypeSelector");
208 // update viewNet
209 myTypeFrameParent->getViewNet()->updateViewNet();
210 return 1;
211}
212
213// ---------------------------------------------------------------------------
214// GNETypeFrame::TypeEditor - methods
215// ---------------------------------------------------------------------------
216
218 MFXGroupBoxModule(typeFrameParent, TL("Type Editor")),
219 myTypeFrameParent(typeFrameParent) {
220 // Create new vehicle type
222 // Create delete/reset vehicle type
224 // Create copy vehicle type
226}
227
228
230
231
232void
234 refreshTypeEditorModule();
235 show();
236}
237
238
239void
243
244
245void
247 // first check if selected VType is valid
248 if (myTypeFrameParent->myTypeSelector->getCurrentType() == nullptr) {
249 // disable buttons
250 myDeleteResetTypeButton->disable();
251 myCopyTypeButton->disable();
252 } else if (GNEAttributeCarrier::parse<bool>(myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(GNE_ATTR_DEFAULT_VTYPE))) {
253 // enable copy button
254 myCopyTypeButton->enable();
255 // enable and set myDeleteTypeButton as "reset")
256 myDeleteResetTypeButton->setText(TL("Reset Type"));
257 myDeleteResetTypeButton->setIcon(GUIIconSubSys::getIcon(GUIIcon::RESET));
258 // check if reset default vehicle type button has to be enabled or disabled
259 if (GNEAttributeCarrier::parse<bool>(myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(GNE_ATTR_DEFAULT_VTYPE_MODIFIED))) {
260 myDeleteResetTypeButton->enable();
261 } else {
262 myDeleteResetTypeButton->disable();
263 }
264 } else {
265 // enable copy button
266 myCopyTypeButton->enable();
267 // enable and set myDeleteTypeButton as "delete")
268 myDeleteResetTypeButton->setText(TL("Delete Type"));
269 myDeleteResetTypeButton->setIcon(GUIIconSubSys::getIcon(GUIIcon::MODEDELETE));
270 myDeleteResetTypeButton->enable();
271 }
272 // update module
273 recalc();
274}
275
276
277long
278GNETypeFrame::TypeEditor::onCmdCreateType(FXObject*, FXSelector, void*) {
279 // obtain a new valid Type ID
280 const std::string typeID = myTypeFrameParent->myViewNet->getNet()->getAttributeCarriers()->generateDemandElementID(SUMO_TAG_VTYPE);
281 // create new vehicle type
282 GNEDemandElement* type = new GNEVType(myTypeFrameParent->myViewNet->getNet(), typeID);
283 // add it using undoList (to allow undo-redo)
284 myTypeFrameParent->myViewNet->getUndoList()->begin(GUIIcon::VTYPE, "create vehicle type");
285 myTypeFrameParent->myViewNet->getUndoList()->add(new GNEChange_DemandElement(type, true), true);
286 myTypeFrameParent->myViewNet->getUndoList()->end();
287 // set created vehicle type in selector
288 myTypeFrameParent->myTypeSelector->setCurrentType(type);
289 return 1;
290}
291
292
293long
295 // continue depending of current mode
296 if (myDeleteResetTypeButton->getIcon() == GUIIconSubSys::getIcon(GUIIcon::MODEDELETE)) {
297 deleteType();
298 } else {
299 resetType();
300 }
301 return 1;
302}
303
304
305long
306GNETypeFrame::TypeEditor::onCmdCopyType(FXObject*, FXSelector, void*) {
307 // obtain a new valid Type ID
308 const std::string typeID = myTypeFrameParent->myViewNet->getNet()->getAttributeCarriers()->generateDemandElementID(SUMO_TAG_VTYPE);
309 // obtain vehicle type in which new Type will be based
310 GNEVType* vType = dynamic_cast<GNEVType*>(myTypeFrameParent->myTypeSelector->getCurrentType());
311 // check that vType exist
312 if (vType) {
313 // create a new Type based on the current selected vehicle type
314 GNEDemandElement* typeCopy = new GNEVType(myTypeFrameParent->myViewNet->getNet(), typeID, vType);
315 // begin undo list operation
316 myTypeFrameParent->myViewNet->getUndoList()->begin(GUIIcon::VTYPE, "copy vehicle type");
317 // add it using undoList (to allow undo-redo)
318 myTypeFrameParent->myViewNet->getUndoList()->add(new GNEChange_DemandElement(typeCopy, true), true);
319 // end undo list operation
320 myTypeFrameParent->myViewNet->getUndoList()->end();
321 // set created vehicle type in selector
322 myTypeFrameParent->myTypeSelector->setCurrentType(typeCopy);
323 }
324 return 1;
325}
326
327
328void
330 // begin reset default vehicle type values
331 myTypeFrameParent->getViewNet()->getUndoList()->begin(GUIIcon::VTYPE, "reset default vehicle type values");
332 // reset all values of default vehicle type
333 for (const auto& attrProperty : GNEAttributeCarrier::getTagProperty(SUMO_TAG_VTYPE)) {
334 // change all attributes with "" to reset it (except ID and vClass)
335 if ((attrProperty.getAttr() != SUMO_ATTR_ID) && (attrProperty.getAttr() != SUMO_ATTR_VCLASS)) {
336 myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(attrProperty.getAttr(), "", myTypeFrameParent->myViewNet->getUndoList());
337 }
338 }
339 // change manually VClass (because it depends of Default VType)
340 if (myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(SUMO_ATTR_ID) == DEFAULT_VTYPE_ID) {
341 myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(SUMO_ATTR_VCLASS, toString(SVC_PASSENGER), myTypeFrameParent->myViewNet->getUndoList());
342 } else if (myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(SUMO_ATTR_ID) == DEFAULT_BIKETYPE_ID) {
343 myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(SUMO_ATTR_VCLASS, toString(SVC_BICYCLE), myTypeFrameParent->myViewNet->getUndoList());
344 } else if (myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(SUMO_ATTR_ID) == DEFAULT_TAXITYPE_ID) {
345 myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(SUMO_ATTR_VCLASS, toString(SVC_TAXI), myTypeFrameParent->myViewNet->getUndoList());
346 } else if (myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(SUMO_ATTR_ID) == DEFAULT_RAILTYPE_ID) {
347 myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(SUMO_ATTR_VCLASS, toString(SVC_RAIL), myTypeFrameParent->myViewNet->getUndoList());
348 } else if (myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(SUMO_ATTR_ID) == DEFAULT_PEDTYPE_ID) {
349 myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(SUMO_ATTR_VCLASS, toString(SVC_PEDESTRIAN), myTypeFrameParent->myViewNet->getUndoList());
350 } else if (myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(SUMO_ATTR_ID) == DEFAULT_CONTAINERTYPE_ID) {
351 myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(SUMO_ATTR_VCLASS, toString(SVC_PEDESTRIAN), myTypeFrameParent->myViewNet->getUndoList());
352 }
353 // change special attribute GNE_ATTR_DEFAULT_VTYPE_MODIFIED
354 myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(GNE_ATTR_DEFAULT_VTYPE_MODIFIED, "false", myTypeFrameParent->myViewNet->getUndoList());
355 // finish reset default vehicle type values
356 myTypeFrameParent->getViewNet()->getUndoList()->end();
357 // refresh TypeSelector
358 myTypeFrameParent->myTypeSelector->refreshTypeSelector();
359}
360
361
362void
364 // show question dialog if vtype has already assigned vehicles
365 if (myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size() > 0) {
366 std::string plural = myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size() == 1 ? ("") : ("s");
367 // show warning in gui testing debug mode
368 WRITE_DEBUG("Opening FXMessageBox 'remove vType'");
369 // Ask confirmation to user
370 FXuint answer = FXMessageBox::question(getApp(), MBOX_YES_NO,
371 ("Remove " + toString(SUMO_TAG_VTYPE) + "s").c_str(), "%s",
372 ("Delete " + toString(SUMO_TAG_VTYPE) + " '" + myTypeFrameParent->myTypeSelector->getCurrentType()->getID() +
373 "' will remove " + toString(myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size()) +
374 " vehicle" + plural + ". Continue?").c_str());
375 if (answer != 1) { // 1:yes, 2:no, 4:esc
376 // write warning if netedit is running in testing mode
377 if (answer == 2) {
378 WRITE_DEBUG("Closed FXMessageBox 'remove vType' with 'No'");
379 } else if (answer == 4) {
380 WRITE_DEBUG("Closed FXMessageBox 'remove vType' with 'ESC'");
381 }
382 } else {
383 // begin undo list operation
384 myTypeFrameParent->myViewNet->getUndoList()->begin(GUIIcon::VTYPE, "delete vehicle type");
385 // remove vehicle type (and all of their children)
386 myTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myTypeFrameParent->myTypeSelector->getCurrentType(),
387 myTypeFrameParent->myViewNet->getUndoList());
388 // end undo list operation
389 myTypeFrameParent->myViewNet->getUndoList()->end();
390 }
391 } else {
392 // begin undo list operation
393 myTypeFrameParent->myViewNet->getUndoList()->begin(GUIIcon::VTYPE, "delete vehicle type");
394 // remove vehicle type (and all of their children)
395 myTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myTypeFrameParent->myTypeSelector->getCurrentType(),
396 myTypeFrameParent->myViewNet->getUndoList());
397 // end undo list operation
398 myTypeFrameParent->myViewNet->getUndoList()->end();
399 }
400}
401
402// ---------------------------------------------------------------------------
403// GNETypeFrame - methods
404// ---------------------------------------------------------------------------
405
407 GNEFrame(viewParent, viewNet, "Types") {
408
409 // create module for edit vehicle types (Create, copy, etc.)
410 myTypeEditor = new TypeEditor(this);
411
412 // create vehicle type selector
413 myTypeSelector = new TypeSelector(this);
414
415 // Create vehicle type attributes editor
417
418 // create module for open extended attributes dialog
420
423
424 // set "VTYPE_DEFAULT" as default vehicle Type
426}
427
428
430
431
432void
434 // refresh vehicle type and Attribute Editor
436 // set myCurrentType as inspected element
438 // show modules
441 // show frame
443}
444
445
450
451
452void
454 // after changing an attribute myTypeSelector, we need to update the list of typeSelector, because ID could be changed
456 //... and typeEditor (due reset)
458}
459
460
461void
463 // open vehicle type dialog
465 GNEVehicleTypeDialog(myTypeSelector->getCurrentType(), true); // NOSONAR, constructor returns after dialog has been closed
466 // set myCurrentType as inspected element
468 // call "showAttributeEditorModule" to refresh attribute list
470 }
471}
472
473
474/****************************************************************************/
FXDEFMAP(GNETypeFrame::TypeSelector) typeSelectorMap[]
@ MID_GNE_DELETE
delete element
Definition GUIAppEnum.h:911
@ MID_GNE_COPY
copy element
Definition GUIAppEnum.h:921
@ MID_GNE_CREATE
create element
Definition GUIAppEnum.h:909
@ MID_GNE_SET_TYPE
used to select a type of element in a combo box
Definition GUIAppEnum.h:927
#define GUIDesignButton
Definition GUIDesigns.h:74
#define GUIDesignComboBox
Definition GUIDesigns.h:288
#define GUIDesignComboBoxNCol
number of column of every combo box
Definition GUIDesigns.h:306
GLenum myCurrentType
#define WRITE_DEBUG(msg)
Definition MsgHandler.h:281
#define TL(string)
Definition MsgHandler.h:287
@ SVC_RAIL
vehicle is a not electrified rail
@ SVC_PASSENGER
vehicle is a passenger car (a "normal" car)
@ SVC_BICYCLE
vehicle is a bicycle
@ SVC_TAXI
vehicle is a taxi
@ SVC_PEDESTRIAN
pedestrian
const std::string DEFAULT_TAXITYPE_ID
const std::string DEFAULT_RAILTYPE_ID
const std::string DEFAULT_PEDTYPE_ID
const std::set< std::string > DEFAULT_VTYPES
const std::string DEFAULT_VTYPE_ID
const std::string DEFAULT_CONTAINERTYPE_ID
const std::string DEFAULT_BIKETYPE_ID
@ SUMO_TAG_VTYPE
description of a vehicle/person/container type
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
@ GNE_ATTR_DEFAULT_VTYPE
Flag to check if VType is a default VType.
@ SUMO_ATTR_VCLASS
@ SUMO_ATTR_ID
@ GNE_ATTR_DEFAULT_VTYPE_MODIFIED
Flag to check if a default VType was modified.
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition ToString.h:46
const GNETagProperties & getTagProperty() const
get tagProperty associated with this Attribute Carrier
An Element which don't belong to GNENet but has influence in the simulation.
void showAttributesEditorExtendedModule()
show AttributesEditorExtended modul
GNEFrame * getFrameParent() const
pointer to GNEFrame parent
void showAttributeEditorModule(bool includeExtended)
show attributes of multiple ACs
GNEViewNet * getViewNet() const
get view net
Definition GNEFrame.cpp:150
GNEViewNet * myViewNet
FOX need this.
Definition GNEFrame.h:117
virtual void show()
show Frame
Definition GNEFrame.cpp:115
virtual void hide()
hide Frame
Definition GNEFrame.cpp:124
GNEDemandElement * retrieveDemandElement(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named demand element.
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
Definition GNENet.cpp:120
void resetType()
reset type
long onCmdDeleteResetType(FXObject *, FXSelector, void *)
Called when "Delete/Reset Vehicle Type" button is clicked.
void deleteType()
delete type
void showTypeEditorModule()
show TypeEditor modul
FXButton * myCreateTypeButton
"create vehicle type" button
long onCmdCreateType(FXObject *, FXSelector, void *)
FXButton * myDeleteResetTypeButton
"delete/reset vehicle type" button
FXButton * myCopyTypeButton
"copy vehicle type"
TypeEditor(GNETypeFrame *typeFrameParent)
FOX-declaration.
void hideTypeEditorModule()
hide TypeEditor box
void refreshTypeEditorModule()
update TypeEditor modul
long onCmdCopyType(FXObject *, FXSelector, void *)
Called when "Copy Vehicle Type" button is clicked.
void setCurrentType(GNEDemandElement *vType)
set current Vehicle Type
void refreshTypeSelectorIDs()
refresh vehicle type selector (only IDs, without refreshing attributes)
long onCmdSelectItem(FXObject *, FXSelector, void *)
Called when the user select another element in ComboBox.
GNEDemandElement * getCurrentType() const
get current Vehicle Type
void refreshTypeSelector()
refresh vehicle type selector
GNEFrameAttributeModules::AttributesEditorExtended * myAttributesEditorExtended
modul for open extended attributes dialog
void attributesEditorExtendedDialogOpened()
open GNEAttributesCreator extended dialog (used for editing advance attributes of Vehicle Types)
void show()
show Frame
GNEFrameAttributeModules::ParametersEditor * myParametersEditor
Parameters editor inspector.
GNETypeFrame(GNEViewParent *viewParent, GNEViewNet *viewNet)
Constructor.
TypeSelector * getTypeSelector() const
get vehicle type selector
GNEFrameAttributeModules::AttributesEditor * myTypeAttributesEditor
editorinternal vehicle type attributes
TypeEditor * myTypeEditor
Vehicle Type editor (Create, copy, etc.)
~GNETypeFrame()
Destructor.
TypeSelector * myTypeSelector
vehicle type selector
void attributeUpdated(SumoXMLAttr attribute)
function called after set a valid attribute in AttributeCreator/AttributeEditor/ParametersEditor/....
Dialog for editing calibrator vehicle types.
GNENet * getNet() const
get the net object
void setInspectedAttributeCarriers(const std::vector< GNEAttributeCarrier * > ACs)
set inspected attributeCarrier
A single child window which contains a view of the simulation area.
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
ComboBox with icon.
MFXGroupBoxModule (based on FXGroupBox)
FXVerticalFrame * getCollapsableFrame()
get collapsable frame (used by all elements that will be collapsed if button is toggled)