Eclipse SUMO - Simulation of Urban MObility
GNEPersonTypeFrame.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-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
14 // The Widget for edit person type (pTypes with vclass='pedestrian) elements
15 /****************************************************************************/
16 
17 // ===========================================================================
18 // included modules
19 // ===========================================================================
20 #include <config.h>
21 
26 #include <netedit/GNENet.h>
27 #include <netedit/GNEViewNet.h>
28 #include <netedit/GNEUndoList.h>
29 
30 #include "GNEPersonTypeFrame.h"
31 
32 
33 // ===========================================================================
34 // FOX callback mapping
35 // ===========================================================================
36 
39 };
40 
46 };
47 
48 // Object implementation
49 FXIMPLEMENT(GNEPersonTypeFrame::PersonTypeSelector, FXGroupBox, personTypeSelectorMap, ARRAYNUMBER(personTypeSelectorMap))
50 FXIMPLEMENT(GNEPersonTypeFrame::PersonTypeEditor, FXGroupBox, personTypeEditorMap, ARRAYNUMBER(personTypeEditorMap))
51 
52 // ===========================================================================
53 // method definitions
54 // ===========================================================================
55 
56 // ---------------------------------------------------------------------------
57 // GNEPersonTypeFrame::PersonTypeSelector - methods
58 // ---------------------------------------------------------------------------
59 
61  FXGroupBox(personTypeFrameParent->myContentFrame, "Current Person Type", GUIDesignGroupBoxFrame),
62  myPersonTypeFrameParent(personTypeFrameParent),
63  myCurrentPersonType(nullptr) {
64  // Create FXComboBox
65  myTypeMatchBox = new FXComboBox(this, GUIDesignComboBoxNCol, this, MID_GNE_SET_TYPE, GUIDesignComboBox);
66  // fill myTypeMatchBox with list of pTypes IDs
67  for (const auto& i : myPersonTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(SUMO_TAG_PTYPE)) {
68  myTypeMatchBox->appendItem(i.first.c_str());
69  }
70  // set DEFAULT_PEDTYPE_ID as default pType
71  myCurrentPersonType = myPersonTypeFrameParent->getViewNet()->getNet()->retrieveDemandElement(SUMO_TAG_PTYPE, DEFAULT_PEDTYPE_ID);
72  // Set visible items
73  if (myTypeMatchBox->getNumItems() <= 20) {
74  myTypeMatchBox->setNumVisible((int)myTypeMatchBox->getNumItems());
75  } else {
76  myTypeMatchBox->setNumVisible(20);
77  }
78  // PersonTypeSelector is always shown
79  show();
80 }
81 
82 
84 
85 
88  return myCurrentPersonType;
89 }
90 
91 
92 void
94  myCurrentPersonType = vType;
95  refreshPersonTypeSelector();
96 }
97 
98 
99 void
101  bool valid = false;
102  myTypeMatchBox->clearItems();
103  // fill myTypeMatchBox with list of pTypes IDs
104  for (const auto& i : myPersonTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(SUMO_TAG_PTYPE)) {
105  myTypeMatchBox->appendItem(i.first.c_str());
106  }
107  // Set visible items
108  if (myTypeMatchBox->getNumItems() <= 20) {
109  myTypeMatchBox->setNumVisible((int)myTypeMatchBox->getNumItems());
110  } else {
111  myTypeMatchBox->setNumVisible(20);
112  }
113  // make sure that tag is in myTypeMatchBox
114  for (int i = 0; i < (int)myTypeMatchBox->getNumItems(); i++) {
115  if (myTypeMatchBox->getItem(i).text() == myCurrentPersonType->getID()) {
116  myTypeMatchBox->setCurrentItem(i);
117  valid = true;
118  }
119  }
120  // Check that give vType type is valid
121  if (!valid) {
122  // set DEFAULT_VEHTYPE as default pType
123  myCurrentPersonType = myPersonTypeFrameParent->getViewNet()->getNet()->retrieveDemandElement(SUMO_TAG_PTYPE, DEFAULT_VTYPE_ID);
124  // refresh myTypeMatchBox again
125  for (int i = 0; i < (int)myTypeMatchBox->getNumItems(); i++) {
126  if (myTypeMatchBox->getItem(i).text() == myCurrentPersonType->getID()) {
127  myTypeMatchBox->setCurrentItem(i);
128  }
129  }
130  }
131  // refresh person type editor modul
132  myPersonTypeFrameParent->myPersonTypeEditor->refreshPersonTypeEditorModul();
133  // show Attribute Editor modul if selected item is valid
134  myPersonTypeFrameParent->myPersonTypeAttributesEditor->showAttributeEditorModul({myCurrentPersonType}, false, true);
135 }
136 
137 
138 long
140  // Check if value of myTypeMatchBox correspond of an allowed additional tags
141  for (const auto& i : myPersonTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(SUMO_TAG_PTYPE)) {
142  if (i.first == myTypeMatchBox->getText().text()) {
143  // set pointer
144  myCurrentPersonType = i.second;
145  // set color of myTypeMatchBox to black (valid)
146  myTypeMatchBox->setTextColor(FXRGB(0, 0, 0));
147  // refresh person type editor modul
148  myPersonTypeFrameParent->myPersonTypeEditor->refreshPersonTypeEditorModul();
149  // show moduls if selected item is valid
150  myPersonTypeFrameParent->myPersonTypeAttributesEditor->showAttributeEditorModul({myCurrentPersonType}, false, true);
151  // Write Warning in console if we're in testing mode
152  WRITE_DEBUG(("Selected item '" + myTypeMatchBox->getText() + "' in PersonTypeSelector").text());
153  return 1;
154  }
155  }
156  myCurrentPersonType = nullptr;
157  // refresh person type editor modul
158  myPersonTypeFrameParent->myPersonTypeEditor->refreshPersonTypeEditorModul();
159  // hide all moduls if selected item isn't valid
160  myPersonTypeFrameParent->myPersonTypeAttributesEditor->hideAttributesEditorModul();
161  // set color of myTypeMatchBox to red (invalid)
162  myTypeMatchBox->setTextColor(FXRGB(255, 0, 0));
163  // Write Warning in console if we're in testing mode
164  WRITE_DEBUG("Selected invalid item in PersonTypeSelector");
165  return 1;
166 }
167 
168 // ---------------------------------------------------------------------------
169 // GNEPersonTypeFrame::PersonTypeEditor - methods
170 // ---------------------------------------------------------------------------
171 
173  FXGroupBox(personTypeFrameParent->myContentFrame, "Person Type Editor", GUIDesignGroupBoxFrame),
174  myPersonTypeFrameParent(personTypeFrameParent) {
175  // Create new person type
176  myCreatePersonTypeButton = new FXButton(this, "Create Person Type", nullptr, this, MID_GNE_CREATE, GUIDesignButton);
177  // Create delete person type
178  myDeletePersonTypeButton = new FXButton(this, "Delete Person Type", nullptr, this, MID_GNE_DELETE, GUIDesignButton);
179  // Create reset person type
180  myResetDefaultPersonTypeButton = new FXButton(this, "Reset default Person Type", nullptr, this, MID_GNE_RESET, GUIDesignButton);
181  // Create copy person type
182  myCopyPersonTypeButton = new FXButton(this, "Copy Person Type", nullptr, this, MID_GNE_COPY, GUIDesignButton);
183 }
184 
185 
187 
188 
189 void
191  refreshPersonTypeEditorModul();
192  show();
193 }
194 
195 
196 void
198  hide();
199 }
200 
201 
202 void
204  // first check if selected pType is valid
205  if (myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType() == nullptr) {
206  // disable all buttons except create button
207  myDeletePersonTypeButton->disable();
208  myResetDefaultPersonTypeButton->disable();
209  myCopyPersonTypeButton->disable();
210  } else if (GNEAttributeCarrier::parse<bool>(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getAttribute(GNE_ATTR_DEFAULT_VTYPE))) {
211  // enable copy button
212  myCopyPersonTypeButton->enable();
213  // hide delete person type buttond and show reset default person type button
214  myDeletePersonTypeButton->hide();
215  myResetDefaultPersonTypeButton->show();
216  // check if reset default person type button has to be enabled or disabled
217  if (GNEAttributeCarrier::parse<bool>(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getAttribute(GNE_ATTR_DEFAULT_VTYPE_MODIFIED))) {
218  myResetDefaultPersonTypeButton->enable();
219  } else {
220  myResetDefaultPersonTypeButton->disable();
221  }
222  } else {
223  // enable copy button
224  myCopyPersonTypeButton->enable();
225  // show delete person type button and hide reset default person type button
226  myDeletePersonTypeButton->show();
227  myDeletePersonTypeButton->enable();
228  myResetDefaultPersonTypeButton->hide();
229  }
230  // update modul
231  recalc();
232 }
233 
234 
235 long
237  // obtain a new valid Vehicle Type ID
238  std::string personTypeID = myPersonTypeFrameParent->myViewNet->getNet()->generateDemandElementID("", SUMO_TAG_PTYPE);
239  // create new person type
240  GNEDemandElement* personType = new GNEVehicleType(myPersonTypeFrameParent->myViewNet, personTypeID, SUMO_TAG_PTYPE);
241  // add it using undoList (to allow undo-redo)
242  myPersonTypeFrameParent->myViewNet->getUndoList()->p_begin("create person type");
243  myPersonTypeFrameParent->myViewNet->getUndoList()->add(new GNEChange_DemandElement(personType, true), true);
244  myPersonTypeFrameParent->myViewNet->getUndoList()->p_end();
245  // set created person type in selector
246  myPersonTypeFrameParent->myPersonTypeSelector->setCurrentPersonType(personType);
247  // refresh PersonType Editor Modul
248  myPersonTypeFrameParent->myPersonTypeEditor->refreshPersonTypeEditorModul();
249  return 1;
250 }
251 
252 
253 long
255  // show question dialog if vtype has already assigned persons
256  if (myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getChildDemandElements().size() > 0) {
257  std::string plural = myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getChildDemandElements().size() == 1 ? ("") : ("s");
258  // show warning in gui testing debug mode
259  WRITE_DEBUG("Opening FXMessageBox 'remove vType'");
260  // Ask confirmation to user
261  FXuint answer = FXMessageBox::question(getApp(), MBOX_YES_NO,
262  ("Remove " + toString(SUMO_TAG_PTYPE) + "s").c_str(), "%s",
263  ("Delete " + toString(SUMO_TAG_PTYPE) + " '" + myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getID() +
264  "' will remove " + toString(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getChildDemandElements().size()) +
265  " person" + plural + ". Continue?").c_str());
266  if (answer != 1) { // 1:yes, 2:no, 4:esc
267  // write warning if netedit is running in testing mode
268  if (answer == 2) {
269  WRITE_DEBUG("Closed FXMessageBox 'remove vType' with 'No'");
270  } else if (answer == 4) {
271  WRITE_DEBUG("Closed FXMessageBox 'remove vType' with 'ESC'");
272  }
273  } else {
274  // begin undo list operation
275  myPersonTypeFrameParent->myViewNet->getUndoList()->p_begin("delete person type");
276  // remove person type (and all of their children)
277  myPersonTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType(),
278  myPersonTypeFrameParent->myViewNet->getUndoList());
279  // end undo list operation
280  myPersonTypeFrameParent->myViewNet->getUndoList()->p_end();
281  }
282  } else {
283  // begin undo list operation
284  myPersonTypeFrameParent->myViewNet->getUndoList()->p_begin("delete person type");
285  // remove person type (and all of their children)
286  myPersonTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType(),
287  myPersonTypeFrameParent->myViewNet->getUndoList());
288  // end undo list operation
289  myPersonTypeFrameParent->myViewNet->getUndoList()->p_end();
290  }
291  return 1;
292 }
293 
294 
295 long
297  // begin reset default person type values
298  myPersonTypeFrameParent->getViewNet()->getUndoList()->p_begin("reset default person type values");
299  // reset all values of default person type
301  // change all attributes with "" to reset it (except ID and vClass)
302  if ((i.getAttr() != SUMO_ATTR_ID) && (i.getAttr() != SUMO_ATTR_VCLASS)) {
303  myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->setAttribute(i.getAttr(), "", myPersonTypeFrameParent->myViewNet->getUndoList());
304  }
305  }
306  // change manually VClass (because it depends of Default pType)
307  if (myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getAttribute(SUMO_ATTR_ID) == DEFAULT_PEDTYPE_ID) {
308  myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->setAttribute(SUMO_ATTR_VCLASS, toString(SVC_PEDESTRIAN), myPersonTypeFrameParent->myViewNet->getUndoList());
309  }
310  // change special attribute GNE_ATTR_DEFAULT_VTYPE_MODIFIED
311  myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->setAttribute(GNE_ATTR_DEFAULT_VTYPE_MODIFIED, "false", myPersonTypeFrameParent->myViewNet->getUndoList());
312  // finish reset default person type values
313  myPersonTypeFrameParent->getViewNet()->getUndoList()->p_end();
314  // refresh PersonTypeSelector
315  myPersonTypeFrameParent->myPersonTypeSelector->refreshPersonTypeSelector();
316  return 1;
317 }
318 
319 
320 long
322  // obtain a new valid person Type ID
323  std::string personTypeID = myPersonTypeFrameParent->myViewNet->getNet()->generateDemandElementID("", SUMO_TAG_PTYPE);
324  // obtain person type in which new person Type will be based
325  GNEVehicleType* vType = dynamic_cast<GNEVehicleType*>(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType());
326  // check that vType exist
327  if (vType) {
328  // create a new person Type based on the current selected person type
329  GNEDemandElement* personTypeCopy = new GNEVehicleType(myPersonTypeFrameParent->myViewNet, personTypeID, vType);
330  // begin undo list operation
331  myPersonTypeFrameParent->myViewNet->getUndoList()->p_begin("copy person type");
332  // add it using undoList (to allow undo-redo)
333  myPersonTypeFrameParent->myViewNet->getUndoList()->add(new GNEChange_DemandElement(personTypeCopy, true), true);
334  // end undo list operation
335  myPersonTypeFrameParent->myViewNet->getUndoList()->p_end();
336  // refresh Vehicle Type Selector (to show the new pType)
337  myPersonTypeFrameParent->myPersonTypeSelector->refreshPersonTypeSelector();
338  // set created person type in selector
339  myPersonTypeFrameParent->myPersonTypeSelector->setCurrentPersonType(personTypeCopy);
340  // refresh PersonType Editor Modul
341  myPersonTypeFrameParent->myPersonTypeEditor->refreshPersonTypeEditorModul();
342  }
343  return 1;
344 }
345 
346 // ---------------------------------------------------------------------------
347 // GNEPersonTypeFrame - methods
348 // ---------------------------------------------------------------------------
349 
350 GNEPersonTypeFrame::GNEPersonTypeFrame(FXHorizontalFrame* horizontalFrameParent, GNEViewNet* viewNet) :
351  GNEFrame(horizontalFrameParent, viewNet, "Person Types") {
352 
353  // create modul for edit person types (Create, copy, etc.)
355 
356  // create person type selector
358 
359  // Create person type attributes editor
361 
362  // set "VTYPE_DEFAULT" as default person Type
364 }
365 
366 
368 
369 
370 void
372  // refresh person type and Attribute Editor
374  // show person type attributes editor (except extended attributes)
376  // show frame
377  GNEFrame::show();
378 }
379 
380 
383  return myPersonTypeSelector;
384 }
385 
386 
387 void
390 }
391 
392 /****************************************************************************/
MID_GNE_CREATE
@ MID_GNE_CREATE
create element
Definition: GUIAppEnum.h:648
SVC_PEDESTRIAN
@ SVC_PEDESTRIAN
pedestrian
Definition: SUMOVehicleClass.h:156
GNEPersonTypeFrame::PersonTypeEditor::showPersonTypeEditorModul
void showPersonTypeEditorModul()
show PersonTypeEditor modul
Definition: GNEPersonTypeFrame.cpp:190
GNEDemandElement
An Element which don't belongs to GNENet but has influency in the simulation.
Definition: GNEDemandElement.h:55
Person
C++ TraCI client API implementation.
GNEChange_DemandElement
Definition: GNEChange_DemandElement.h:45
GNEPersonTypeFrame::myPersonTypeAttributesEditor
GNEFrameAttributesModuls::AttributesEditor * myPersonTypeAttributesEditor
editorinternal person type attributes
Definition: GNEPersonTypeFrame.h:168
GNEPersonTypeFrame::PersonTypeEditor::onCmdCopyPersonType
long onCmdCopyPersonType(FXObject *, FXSelector, void *)
Called when "Copy Vehicle Type" button is clicked.
Definition: GNEPersonTypeFrame.cpp:321
DEFAULT_PEDTYPE_ID
const std::string DEFAULT_PEDTYPE_ID
GNEChange_DemandElement.h
MID_GNE_SET_TYPE
@ MID_GNE_SET_TYPE
used to select a type of element in a combo box
Definition: GUIAppEnum.h:662
GNEPersonTypeFrame::attributeUpdated
void attributeUpdated()
function called after set a valid attribute in AttributeCreator/AttributeEditor/ParametersEditor/....
Definition: GNEPersonTypeFrame.cpp:388
GNEPersonTypeFrame::PersonTypeSelector::getCurrentPersonType
GNEDemandElement * getCurrentPersonType() const
get current Vehicle Type
Definition: GNEPersonTypeFrame.cpp:87
GNEPersonTypeFrame.h
GUIDesignComboBoxNCol
#define GUIDesignComboBoxNCol
number of column of every combo box
Definition: GUIDesigns.h:217
GNEPersonTypeFrame::PersonTypeSelector
Definition: GNEPersonTypeFrame.h:45
GNENet::retrieveDemandElement
GNEDemandElement * retrieveDemandElement(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named demand element.
Definition: GNENet.cpp:2316
GNEFrame
Definition: GNEFrame.h:34
SUMO_TAG_PTYPE
@ SUMO_TAG_PTYPE
description of a person type (used in NETEDIT)
Definition: SUMOXMLDefinitions.h:123
GNEViewNet
Definition: GNEViewNet.h:42
GNEPersonTypeFrame::show
void show()
show Frame
Definition: GNEPersonTypeFrame.cpp:371
MID_GNE_COPY
@ MID_GNE_COPY
copy element
Definition: GUIAppEnum.h:658
SUMO_ATTR_ID
@ SUMO_ATTR_ID
Definition: SUMOXMLDefinitions.h:378
GUIDesigns.h
GNEPersonTypeFrame::PersonTypeEditor::PersonTypeEditor
PersonTypeEditor(GNEPersonTypeFrame *personTypeFrameParent)
FOX-declaration.
Definition: GNEPersonTypeFrame.cpp:172
GNEPersonTypeFrame::PersonTypeEditor::onCmdCreatePersonType
long onCmdCreatePersonType(FXObject *, FXSelector, void *)
Definition: GNEPersonTypeFrame.cpp:236
GNEFrame::myContentFrame
FXVerticalFrame * myContentFrame
Vertical frame that holds all widgets of frame.
Definition: GNEFrame.h:124
GUIDesignButton
#define GUIDesignButton
Definition: GUIDesigns.h:50
GNEPersonTypeFrame::~GNEPersonTypeFrame
~GNEPersonTypeFrame()
Destructor.
Definition: GNEPersonTypeFrame.cpp:367
GNEPersonTypeFrame::PersonTypeEditor::myDeletePersonTypeButton
FXButton * myDeletePersonTypeButton
"delete person type" button
Definition: GNEPersonTypeFrame.h:135
GNEPersonTypeFrame::GNEPersonTypeFrame
GNEPersonTypeFrame(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet)
Constructor.
Definition: GNEPersonTypeFrame.cpp:350
GNEPersonTypeFrame::PersonTypeSelector::~PersonTypeSelector
~PersonTypeSelector()
destructor
Definition: GNEPersonTypeFrame.cpp:83
GNEPersonTypeFrame::PersonTypeEditor::hidePersonTypeEditorModul
void hidePersonTypeEditorModul()
hide PersonTypeEditor box
Definition: GNEPersonTypeFrame.cpp:197
GNEFrameAttributesModuls::AttributesEditor
Definition: GNEFrameAttributesModuls.h:374
GUIAppEnum.h
GNEPersonTypeFrame
Definition: GNEPersonTypeFrame.h:37
GNEViewNet::getNet
GNENet * getNet() const
get the net object
Definition: GNEViewNet.cpp:1014
GNEVehicleType
Definition: GNEVehicleType.h:36
GNE_ATTR_DEFAULT_VTYPE_MODIFIED
@ GNE_ATTR_DEFAULT_VTYPE_MODIFIED
Flag to check if a default VType was modified.
Definition: SUMOXMLDefinitions.h:1007
DEFAULT_VTYPE_ID
const std::string DEFAULT_VTYPE_ID
GNEViewNet.h
GNEPersonTypeFrame::PersonTypeEditor::refreshPersonTypeEditorModul
void refreshPersonTypeEditorModul()
update PersonTypeEditor modul
Definition: GNEPersonTypeFrame.cpp:203
GNEPersonTypeFrame::PersonTypeEditor::onCmdDeletePersonType
long onCmdDeletePersonType(FXObject *, FXSelector, void *)
Called when "Delete Vehicle Type" button is clicked.
Definition: GNEPersonTypeFrame.cpp:254
GNEPersonTypeFrame::PersonTypeEditor::myResetDefaultPersonTypeButton
FXButton * myResetDefaultPersonTypeButton
"delete default person type" button
Definition: GNEPersonTypeFrame.h:138
GNEFrameAttributesModuls::AttributesEditor::showAttributeEditorModul
void showAttributeEditorModul(const std::vector< GNEAttributeCarrier * > &ACs, bool includeExtended, bool forceAttributeEnabled)
show attributes of multiple ACs
Definition: GNEFrameAttributesModuls.cpp:1461
GNEFrame::myViewNet
GNEViewNet * myViewNet
View Net.
Definition: GNEFrame.h:121
GUIDesignGroupBoxFrame
#define GUIDesignGroupBoxFrame
Group box design extended over frame.
Definition: GUIDesigns.h:239
GNEPersonTypeFrame::PersonTypeSelector::refreshPersonTypeSelector
void refreshPersonTypeSelector()
refresh person type
Definition: GNEPersonTypeFrame.cpp:100
GNE_ATTR_DEFAULT_VTYPE
@ GNE_ATTR_DEFAULT_VTYPE
Flag to check if VType is a default VType.
Definition: SUMOXMLDefinitions.h:1005
toString
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition: ToString.h:47
GNEPersonTypeFrame::PersonTypeEditor
Definition: GNEPersonTypeFrame.h:89
GNEPersonTypeFrame::PersonTypeSelector::setCurrentPersonType
void setCurrentPersonType(GNEDemandElement *vType)
set current Vehicle Type
Definition: GNEPersonTypeFrame.cpp:93
GNEPersonTypeFrame::PersonTypeEditor::~PersonTypeEditor
~PersonTypeEditor()
destructor
Definition: GNEPersonTypeFrame.cpp:186
GNEPersonTypeFrame::PersonTypeEditor::myCopyPersonTypeButton
FXButton * myCopyPersonTypeButton
"copy person type"
Definition: GNEPersonTypeFrame.h:141
GUIDesignComboBox
#define GUIDesignComboBox
Definition: GUIDesigns.h:205
MID_GNE_RESET
@ MID_GNE_RESET
reset element
Definition: GUIAppEnum.h:654
SUMO_ATTR_VCLASS
@ SUMO_ATTR_VCLASS
Definition: SUMOXMLDefinitions.h:450
GNEPersonTypeFrame::PersonTypeEditor::myCreatePersonTypeButton
FXButton * myCreatePersonTypeButton
"create person type" button
Definition: GNEPersonTypeFrame.h:132
config.h
GNEAttributeCarrier::getTagProperties
static const TagProperties & getTagProperties(SumoXMLTag tag)
get Tag Properties
Definition: GNEAttributeCarrier.cpp:1298
GNEPersonTypeFrame::PersonTypeEditor::onCmdResetPersonType
long onCmdResetPersonType(FXObject *, FXSelector, void *)
Called when "Delete Vehicle Type" button is clicked.
Definition: GNEPersonTypeFrame.cpp:296
GNEVehicleType.h
FXDEFMAP
FXDEFMAP(GNEPersonTypeFrame::PersonTypeSelector) personTypeSelectorMap[]
MID_GNE_DELETE
@ MID_GNE_DELETE
delete element
Definition: GUIAppEnum.h:650
GNEFrame::show
virtual void show()
show Frame
Definition: GNEFrame.cpp:107
WRITE_DEBUG
#define WRITE_DEBUG(msg)
Definition: MsgHandler.h:284
GNEFrame::hide
virtual void hide()
hide Frame
Definition: GNEFrame.cpp:116
GNENet.h
GNEPersonTypeFrame::getPersonTypeSelector
PersonTypeSelector * getPersonTypeSelector() const
get person type selector
Definition: GNEPersonTypeFrame.cpp:382
GNEPersonTypeFrame::PersonTypeSelector::onCmdSelectItem
long onCmdSelectItem(FXObject *, FXSelector, void *)
Definition: GNEPersonTypeFrame.cpp:139
GNEUndoList.h
GNEPersonTypeFrame::myPersonTypeSelector
PersonTypeSelector * myPersonTypeSelector
person type selector
Definition: GNEPersonTypeFrame.h:165
GNEPersonTypeFrame::myPersonTypeEditor
PersonTypeEditor * myPersonTypeEditor
Vehicle Type editor (Create, copy, etc.)
Definition: GNEPersonTypeFrame.h:171