Eclipse SUMO - Simulation of Urban MObility
GNETypeFrame.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2022 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>
30 
31 #include "GNETypeFrame.h"
32 
33 
34 // ===========================================================================
35 // FOX callback mapping
36 // ===========================================================================
37 
38 FXDEFMAP(GNETypeFrame::TypeSelector) typeSelectorMap[] = {
40 };
41 
42 FXDEFMAP(GNETypeFrame::TypeEditor) typeEditorMap[] = {
46 };
47 
48 // Object implementation
49 FXIMPLEMENT(GNETypeFrame::TypeSelector, FXGroupBoxModule, typeSelectorMap, ARRAYNUMBER(typeSelectorMap))
50 FXIMPLEMENT(GNETypeFrame::TypeEditor, FXGroupBoxModule, typeEditorMap, ARRAYNUMBER(typeEditorMap))
51 
52 // ===========================================================================
53 // method definitions
54 // ===========================================================================
55 
56 // ---------------------------------------------------------------------------
57 // GNETypeFrame::TypeSelector - methods
58 // ---------------------------------------------------------------------------
59 
61  FXGroupBoxModule(typeFrameParent->myContentFrame, "Current Type"),
62  myTypeFrameParent(typeFrameParent),
63  myCurrentType(nullptr) {
64  // Create FXComboBox
65  myTypeMatchBox = new FXComboBox(getCollapsableFrame(), GUIDesignComboBoxNCol, this, MID_GNE_SET_TYPE, GUIDesignComboBox);
66  // add default Vehicle an Bike types in the first and second positions
67  for (const auto& defaultvType : DEFAULT_VTYPES) {
68  myTypeMatchBox->appendItem(defaultvType.c_str());
69  }
70  // fill myTypeMatchBox with list of VTypes IDs
71  for (const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(SUMO_TAG_VTYPE)) {
72  if (DEFAULT_VTYPES.count(vType->getID()) == 0) {
73  myTypeMatchBox->appendItem(vType->getID().c_str());
74  }
75  }
76  // set DEFAULT_VEHTYPE as default VType
77  myCurrentType = myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveDemandElement(SUMO_TAG_VTYPE, DEFAULT_VTYPE_ID);
78  // Set visible items
79  if (myTypeMatchBox->getNumItems() <= 20) {
80  myTypeMatchBox->setNumVisible((int)myTypeMatchBox->getNumItems());
81  } else {
82  myTypeMatchBox->setNumVisible(20);
83  }
84  // TypeSelector is always shown
85  show();
86 }
87 
88 
90 
91 
94  return myCurrentType;
95 }
96 
97 
98 void
100  myCurrentType = vType;
101  refreshTypeSelector();
102 }
103 
104 
105 void
107  bool valid = false;
108  // clear items
109  myTypeMatchBox->clearItems();
110  // add default Vehicle an Bike types in the first and second positions
111  for (const auto& defaultvType : DEFAULT_VTYPES) {
112  myTypeMatchBox->appendItem(defaultvType.c_str());
113  }
114  // fill myTypeMatchBox with list of VTypes IDs
115  for (const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(SUMO_TAG_VTYPE)) {
116  if (DEFAULT_VTYPES.count(vType->getID()) == 0) {
117  myTypeMatchBox->appendItem(vType->getID().c_str());
118  }
119  }
120  // Set visible items
121  if (myTypeMatchBox->getNumItems() <= 20) {
122  myTypeMatchBox->setNumVisible((int)myTypeMatchBox->getNumItems());
123  } else {
124  myTypeMatchBox->setNumVisible(20);
125  }
126  // make sure that tag is in myTypeMatchBox
127  if (myCurrentType) {
128  for (int i = 0; i < (int)myTypeMatchBox->getNumItems(); i++) {
129  if (myTypeMatchBox->getItem(i).text() == myCurrentType->getID()) {
130  myTypeMatchBox->setCurrentItem(i);
131  valid = true;
132  }
133  }
134  }
135  // Check that give vType type is valid
136  if (!valid) {
137  // set DEFAULT_VEHTYPE as default VType
138  myCurrentType = myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveDemandElement(SUMO_TAG_VTYPE, DEFAULT_VTYPE_ID);
139  // refresh myTypeMatchBox again
140  for (int i = 0; i < (int)myTypeMatchBox->getNumItems(); i++) {
141  if (myTypeMatchBox->getItem(i).text() == myCurrentType->getID()) {
142  myTypeMatchBox->setCurrentItem(i);
143  }
144  }
145  }
146  // refresh vehicle type editor modul
147  myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
148  // set myCurrentType as inspected element
149  myTypeFrameParent->getViewNet()->setInspectedAttributeCarriers({myCurrentType});
150  // show Attribute Editor modul
151  myTypeFrameParent->myTypeAttributesEditor->showAttributeEditorModule(false, true);
152 }
153 
154 
155 void
157  if (myCurrentType) {
158  myTypeMatchBox->setItem(myTypeMatchBox->getCurrentItem(), myCurrentType->getID().c_str());
159  }
160 }
161 
162 
163 long
164 GNETypeFrame::TypeSelector::onCmdSelectItem(FXObject*, FXSelector, void*) {
165  // Check if value of myTypeMatchBox correspond of an allowed additional tags
166  for (const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(SUMO_TAG_VTYPE)) {
167  if (vType->getID() == myTypeMatchBox->getText().text()) {
168  // set pointer
169  myCurrentType = vType;
170  // set color of myTypeMatchBox to black (valid)
171  myTypeMatchBox->setTextColor(FXRGB(0, 0, 0));
172  // refresh vehicle type editor modul
173  myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
174  // set myCurrentType as inspected element
175  myTypeFrameParent->getViewNet()->setInspectedAttributeCarriers({myCurrentType});
176  // show moduls if selected item is valid
177  myTypeFrameParent->myTypeAttributesEditor->showAttributeEditorModule(false, true);
178  // Write Warning in console if we're in testing mode
179  WRITE_DEBUG(("Selected item '" + myTypeMatchBox->getText() + "' in TypeSelector").text());
180  return 1;
181  }
182  }
183  myCurrentType = nullptr;
184  // refresh vehicle type editor modul
185  myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
186  // hide all moduls if selected item isn't valid
187  myTypeFrameParent->myTypeAttributesEditor->hideAttributesEditorModule();
188  // set color of myTypeMatchBox to red (invalid)
189  myTypeMatchBox->setTextColor(FXRGB(255, 0, 0));
190  // Write Warning in console if we're in testing mode
191  WRITE_DEBUG("Selected invalid item in TypeSelector");
192  return 1;
193 }
194 
195 // ---------------------------------------------------------------------------
196 // GNETypeFrame::TypeEditor - methods
197 // ---------------------------------------------------------------------------
198 
200  FXGroupBoxModule(typeFrameParent->myContentFrame, "Type Editor"),
201  myTypeFrameParent(typeFrameParent) {
202  // Create new vehicle type
204  // Create delete/reset vehicle type
206  // Create copy vehicle type
208 }
209 
210 
212 
213 
214 void
216  refreshTypeEditorModule();
217  show();
218 }
219 
220 
221 void
223  hide();
224 }
225 
226 
227 void
229  // first check if selected VType is valid
230  if (myTypeFrameParent->myTypeSelector->getCurrentType() == nullptr) {
231  // disable buttons
232  myDeleteResetTypeButton->disable();
233  myCopyTypeButton->disable();
234  } else if (GNEAttributeCarrier::parse<bool>(myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(GNE_ATTR_DEFAULT_VTYPE))) {
235  // enable copy button
236  myCopyTypeButton->enable();
237  // enable and set myDeleteTypeButton as "reset")
238  myDeleteResetTypeButton->setText("Reset type");
239  myDeleteResetTypeButton->setIcon(GUIIconSubSys::getIcon(GUIIcon::RESET));
240  // check if reset default vehicle type button has to be enabled or disabled
241  if (GNEAttributeCarrier::parse<bool>(myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(GNE_ATTR_DEFAULT_VTYPE_MODIFIED))) {
242  myDeleteResetTypeButton->enable();
243  } else {
244  myDeleteResetTypeButton->disable();
245  }
246  } else {
247  // enable copy button
248  myCopyTypeButton->enable();
249  // enable and set myDeleteTypeButton as "delete")
250  myDeleteResetTypeButton->setText("Delete type");
251  myDeleteResetTypeButton->setIcon(GUIIconSubSys::getIcon(GUIIcon::MODEDELETE));
252  myDeleteResetTypeButton->enable();
253  }
254  // update modul
255  recalc();
256 }
257 
258 
259 long
260 GNETypeFrame::TypeEditor::onCmdCreateType(FXObject*, FXSelector, void*) {
261  // obtain a new valid Type ID
262  const std::string typeID = myTypeFrameParent->myViewNet->getNet()->getAttributeCarriers()->generateDemandElementID(SUMO_TAG_VTYPE);
263  // create new vehicle type
264  GNEDemandElement* type = new GNEVType(myTypeFrameParent->myViewNet->getNet(), typeID);
265  // add it using undoList (to allow undo-redo)
266  myTypeFrameParent->myViewNet->getUndoList()->begin(GUIIcon::VTYPE, "create vehicle type");
267  myTypeFrameParent->myViewNet->getUndoList()->add(new GNEChange_DemandElement(type, true), true);
268  myTypeFrameParent->myViewNet->getUndoList()->end();
269  // set created vehicle type in selector
270  myTypeFrameParent->myTypeSelector->setCurrentType(type);
271  // refresh Type Editor Module
272  myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
273  return 1;
274 }
275 
276 
277 long
278 GNETypeFrame::TypeEditor::onCmdDeleteResetType(FXObject*, FXSelector, void*) {
279  // continue depending of current mode
280  if (myDeleteResetTypeButton->getIcon() == GUIIconSubSys::getIcon(GUIIcon::MODEDELETE)) {
281  deleteType();
282  } else {
283  resetType();
284  }
285  return 1;
286 }
287 
288 
289 long
290 GNETypeFrame::TypeEditor::onCmdCopyType(FXObject*, FXSelector, void*) {
291  // obtain a new valid Type ID
292  const std::string typeID = myTypeFrameParent->myViewNet->getNet()->getAttributeCarriers()->generateDemandElementID(SUMO_TAG_VTYPE);
293  // obtain vehicle type in which new Type will be based
294  GNEVType* vType = dynamic_cast<GNEVType*>(myTypeFrameParent->myTypeSelector->getCurrentType());
295  // check that vType exist
296  if (vType) {
297  // create a new Type based on the current selected vehicle type
298  GNEDemandElement* typeCopy = new GNEVType(myTypeFrameParent->myViewNet->getNet(), typeID, vType);
299  // begin undo list operation
300  myTypeFrameParent->myViewNet->getUndoList()->begin(GUIIcon::VTYPE, "copy vehicle type");
301  // add it using undoList (to allow undo-redo)
302  myTypeFrameParent->myViewNet->getUndoList()->add(new GNEChange_DemandElement(typeCopy, true), true);
303  // end undo list operation
304  myTypeFrameParent->myViewNet->getUndoList()->end();
305  // refresh Type Selector (to show the new VType)
306  myTypeFrameParent->myTypeSelector->refreshTypeSelector();
307  // set created vehicle type in selector
308  myTypeFrameParent->myTypeSelector->setCurrentType(typeCopy);
309  // refresh Type Editor Module
310  myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
311  }
312  return 1;
313 }
314 
315 
316 void
318  // begin reset default vehicle type values
319  myTypeFrameParent->getViewNet()->getUndoList()->begin(GUIIcon::VTYPE, "reset default vehicle type values");
320  // reset all values of default vehicle type
321  for (const auto& attrProperty : GNEAttributeCarrier::getTagProperty(SUMO_TAG_VTYPE)) {
322  // change all attributes with "" to reset it (except ID and vClass)
323  if ((attrProperty.getAttr() != SUMO_ATTR_ID) && (attrProperty.getAttr() != SUMO_ATTR_VCLASS)) {
324  myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(attrProperty.getAttr(), "", myTypeFrameParent->myViewNet->getUndoList());
325  }
326  }
327  // change manually VClass (because it depends of Default VType)
328  if (myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(SUMO_ATTR_ID) == DEFAULT_VTYPE_ID) {
329  myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(SUMO_ATTR_VCLASS, toString(SVC_PASSENGER), myTypeFrameParent->myViewNet->getUndoList());
330  } else if (myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(SUMO_ATTR_ID) == DEFAULT_BIKETYPE_ID) {
331  myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(SUMO_ATTR_VCLASS, toString(SVC_BICYCLE), myTypeFrameParent->myViewNet->getUndoList());
332  } else if (myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(SUMO_ATTR_ID) == DEFAULT_TAXITYPE_ID) {
333  myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(SUMO_ATTR_VCLASS, toString(SVC_TAXI), myTypeFrameParent->myViewNet->getUndoList());
334  } else if (myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(SUMO_ATTR_ID) == DEFAULT_PEDTYPE_ID) {
335  myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(SUMO_ATTR_VCLASS, toString(SVC_PEDESTRIAN), myTypeFrameParent->myViewNet->getUndoList());
336  } else if (myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(SUMO_ATTR_ID) == DEFAULT_CONTAINERTYPE_ID) {
337  myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(SUMO_ATTR_VCLASS, toString(SVC_PEDESTRIAN), myTypeFrameParent->myViewNet->getUndoList());
338  }
339  // change special attribute GNE_ATTR_DEFAULT_VTYPE_MODIFIED
340  myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(GNE_ATTR_DEFAULT_VTYPE_MODIFIED, "false", myTypeFrameParent->myViewNet->getUndoList());
341  // finish reset default vehicle type values
342  myTypeFrameParent->getViewNet()->getUndoList()->end();
343  // refresh TypeSelector
344  myTypeFrameParent->myTypeSelector->refreshTypeSelector();
345 }
346 
347 
348 void
350  // show question dialog if vtype has already assigned vehicles
351  if (myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size() > 0) {
352  std::string plural = myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size() == 1 ? ("") : ("s");
353  // show warning in gui testing debug mode
354  WRITE_DEBUG("Opening FXMessageBox 'remove vType'");
355  // Ask confirmation to user
356  FXuint answer = FXMessageBox::question(getApp(), MBOX_YES_NO,
357  ("Remove " + toString(SUMO_TAG_VTYPE) + "s").c_str(), "%s",
358  ("Delete " + toString(SUMO_TAG_VTYPE) + " '" + myTypeFrameParent->myTypeSelector->getCurrentType()->getID() +
359  "' will remove " + toString(myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size()) +
360  " vehicle" + plural + ". Continue?").c_str());
361  if (answer != 1) { // 1:yes, 2:no, 4:esc
362  // write warning if netedit is running in testing mode
363  if (answer == 2) {
364  WRITE_DEBUG("Closed FXMessageBox 'remove vType' with 'No'");
365  } else if (answer == 4) {
366  WRITE_DEBUG("Closed FXMessageBox 'remove vType' with 'ESC'");
367  }
368  } else {
369  // begin undo list operation
370  myTypeFrameParent->myViewNet->getUndoList()->begin(GUIIcon::VTYPE, "delete vehicle type");
371  // remove vehicle type (and all of their children)
372  myTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myTypeFrameParent->myTypeSelector->getCurrentType(),
373  myTypeFrameParent->myViewNet->getUndoList());
374  // end undo list operation
375  myTypeFrameParent->myViewNet->getUndoList()->end();
376  }
377  } else {
378  // begin undo list operation
379  myTypeFrameParent->myViewNet->getUndoList()->begin(GUIIcon::VTYPE, "delete vehicle type");
380  // remove vehicle type (and all of their children)
381  myTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myTypeFrameParent->myTypeSelector->getCurrentType(),
382  myTypeFrameParent->myViewNet->getUndoList());
383  // end undo list operation
384  myTypeFrameParent->myViewNet->getUndoList()->end();
385  }
386 }
387 
388 // ---------------------------------------------------------------------------
389 // GNETypeFrame - methods
390 // ---------------------------------------------------------------------------
391 
392 GNETypeFrame::GNETypeFrame(FXHorizontalFrame* horizontalFrameParent, GNEViewNet* viewNet) :
393  GNEFrame(horizontalFrameParent, viewNet, "Types") {
394 
395  // create modul for edit vehicle types (Create, copy, etc.)
396  myTypeEditor = new TypeEditor(this);
397 
398  // create vehicle type selector
399  myTypeSelector = new TypeSelector(this);
400 
401  // Create vehicle type attributes editor
403 
404  // create modul for open extended attributes dialog
406 
407  // set "VTYPE_DEFAULT" as default vehicle Type
409 }
410 
411 
413 
414 
415 void
417  // refresh vehicle type and Attribute Editor
419  // set myCurrentType as inspected element
421  // show vehicle type attributes editor (except extended attributes)
423  // show frame
424  GNEFrame::show();
425 }
426 
427 
430  return myTypeSelector;
431 }
432 
433 
434 void
436  // after changing an attribute myTypeSelector, we need to update the list of typeSelector, because ID could be changed
438  //... and typeEditor (due reset)
440 }
441 
442 
443 void
445  // open vehicle type dialog
448  // set myCurrentType as inspected element
450  // call "showAttributeEditorModule" to refresh attribute list
452  }
453 }
454 
455 
456 /****************************************************************************/
FXDEFMAP(GNETypeFrame::TypeSelector) typeSelectorMap[]
@ MID_GNE_DELETE
delete element
Definition: GUIAppEnum.h:801
@ MID_GNE_COPY
copy element
Definition: GUIAppEnum.h:811
@ MID_GNE_CREATE
create element
Definition: GUIAppEnum.h:799
@ MID_GNE_SET_TYPE
used to select a type of element in a combo box
Definition: GUIAppEnum.h:815
#define GUIDesignButton
Definition: GUIDesigns.h:68
#define GUIDesignComboBox
Definition: GUIDesigns.h:267
#define GUIDesignComboBoxNCol
number of column of every combo box
Definition: GUIDesigns.h:285
#define WRITE_DEBUG(msg)
Definition: MsgHandler.h:290
@ 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_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
@ 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
FXGroupBoxModule (based on FXGroupBox)
FXVerticalFrame * getCollapsableFrame()
get collapsable frame (used by all elements that will be collapsed if button is toogled)
const GNETagProperties & getTagProperty() const
get tagProperty associated with this Attribute Carrier
An Element which don't belongs to GNENet but has influency in the simulation.
void showAttributeEditorModule(bool includeExtended, bool forceAttributeEnabled)
show attributes of multiple ACs
GNEFrame * getFrameParent() const
pointer to GNEFrame parent
GNEViewNet * getViewNet() const
get view net
Definition: GNEFrame.cpp:133
GNEViewNet * myViewNet
View Net.
Definition: GNEFrame.h:114
FXVerticalFrame * myContentFrame
Vertical frame that holds all widgets of frame.
Definition: GNEFrame.h:117
virtual void show()
show Frame
Definition: GNEFrame.cpp:108
virtual void hide()
hide Frame
Definition: GNEFrame.cpp:117
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:125
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
Definition: GNETypeFrame.h:138
long onCmdCreateType(FXObject *, FXSelector, void *)
FXButton * myDeleteResetTypeButton
"delete/reset vehicle type" button
Definition: GNETypeFrame.h:141
FXButton * myCopyTypeButton
"copy vehicle type"
Definition: GNETypeFrame.h:144
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 *)
GNEDemandElement * getCurrentType() const
get current Vehicle Type
void refreshTypeSelector()
refresh vehicle type selector
GNEFrameAttributeModules::AttributesEditorExtended * myAttributesEditorExtended
modul for open extended attributes dialog
Definition: GNETypeFrame.h:177
void attributesEditorExtendedDialogOpened()
open AttributesCreator extended dialog (used for editing advance attributes of Vehicle Types)
void show()
show Frame
TypeSelector * getTypeSelector() const
get vehicle type selector
void attributeUpdated()
function called after set a valid attribute in AttributeCreator/AttributeEditor/ParametersEditor/....
GNETypeFrame(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet)
Constructor.
GNEFrameAttributeModules::AttributesEditor * myTypeAttributesEditor
editorinternal vehicle type attributes
Definition: GNETypeFrame.h:174
TypeEditor * myTypeEditor
Vehicle Type editor (Create, copy, etc.)
Definition: GNETypeFrame.h:180
~GNETypeFrame()
Destructor.
TypeSelector * myTypeSelector
vehicle type selector
Definition: GNETypeFrame.h:171
Dialog for edit rerouter intervals.
GNENet * getNet() const
get the net object
void setInspectedAttributeCarriers(const std::vector< GNEAttributeCarrier * > ACs)
set inspected attributeCarrier
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon