63 myVehicleTypeFrameParent(vehicleTypeFrameParent),
64 myCurrentVehicleType(
nullptr) {
71 for (
const auto& i : myVehicleTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
73 myTypeMatchBox->appendItem(i.first.c_str());
79 if (myTypeMatchBox->getNumItems() <= 20) {
80 myTypeMatchBox->setNumVisible((
int)myTypeMatchBox->getNumItems());
82 myTypeMatchBox->setNumVisible(20);
94 return myCurrentVehicleType;
100 myCurrentVehicleType = vType;
101 refreshVehicleTypeSelector();
109 myTypeMatchBox->clearItems();
114 for (
const auto& i : myVehicleTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
116 myTypeMatchBox->appendItem(i.first.c_str());
120 if (myTypeMatchBox->getNumItems() <= 20) {
121 myTypeMatchBox->setNumVisible((
int)myTypeMatchBox->getNumItems());
123 myTypeMatchBox->setNumVisible(20);
126 for (
int i = 0; i < (int)myTypeMatchBox->getNumItems(); i++) {
127 if (myTypeMatchBox->getItem(i).text() == myCurrentVehicleType->getID()) {
128 myTypeMatchBox->setCurrentItem(i);
137 for (
int i = 0; i < (int)myTypeMatchBox->getNumItems(); i++) {
138 if (myTypeMatchBox->getItem(i).text() == myCurrentVehicleType->getID()) {
139 myTypeMatchBox->setCurrentItem(i);
144 myVehicleTypeFrameParent->myVehicleTypeEditor->refreshVehicleTypeEditorModul();
146 myVehicleTypeFrameParent->getViewNet()->setInspectedAttributeCarriers({myCurrentVehicleType});
148 myVehicleTypeFrameParent->myVehicleTypeAttributesEditor->showAttributeEditorModul(
false,
true);
154 if (myCurrentVehicleType) {
155 myTypeMatchBox->setItem(myTypeMatchBox->getCurrentItem(), myCurrentVehicleType->getID().c_str());
163 for (
const auto& i : myVehicleTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
164 if (i.first == myTypeMatchBox->getText().text()) {
166 myCurrentVehicleType = i.second;
168 myTypeMatchBox->setTextColor(FXRGB(0, 0, 0));
170 myVehicleTypeFrameParent->myVehicleTypeEditor->refreshVehicleTypeEditorModul();
172 myVehicleTypeFrameParent->getViewNet()->setInspectedAttributeCarriers({myCurrentVehicleType});
174 myVehicleTypeFrameParent->myVehicleTypeAttributesEditor->showAttributeEditorModul(
false,
true);
176 WRITE_DEBUG((
"Selected item '" + myTypeMatchBox->getText() +
"' in VehicleTypeSelector").text());
180 myCurrentVehicleType =
nullptr;
182 myVehicleTypeFrameParent->myVehicleTypeEditor->refreshVehicleTypeEditorModul();
184 myVehicleTypeFrameParent->myVehicleTypeAttributesEditor->hideAttributesEditorModul();
186 myTypeMatchBox->setTextColor(FXRGB(255, 0, 0));
188 WRITE_DEBUG(
"Selected invalid item in VehicleTypeSelector");
198 myVehicleTypeFrameParent(vehicleTypeFrameParent) {
215 refreshVehicleTypeEditorModul();
229 if (myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType() ==
nullptr) {
231 myDeleteVehicleTypeButton->disable();
232 myResetDefaultVehicleTypeButton->disable();
233 myCopyVehicleTypeButton->disable();
234 }
else if (GNEAttributeCarrier::parse<bool>(myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getAttribute(
GNE_ATTR_DEFAULT_VTYPE))) {
236 myCopyVehicleTypeButton->enable();
238 myDeleteVehicleTypeButton->hide();
239 myResetDefaultVehicleTypeButton->show();
241 if (GNEAttributeCarrier::parse<bool>(myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getAttribute(
GNE_ATTR_DEFAULT_VTYPE_MODIFIED))) {
242 myResetDefaultVehicleTypeButton->enable();
244 myResetDefaultVehicleTypeButton->disable();
248 myCopyVehicleTypeButton->enable();
250 myDeleteVehicleTypeButton->show();
251 myDeleteVehicleTypeButton->enable();
252 myResetDefaultVehicleTypeButton->hide();
262 std::string vehicleTypeID = myVehicleTypeFrameParent->myViewNet->getNet()->generateDemandElementID(
SUMO_TAG_VTYPE);
266 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_begin(
"create vehicle type");
268 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_end();
270 myVehicleTypeFrameParent->myVehicleTypeSelector->setCurrentVehicleType(vehicleType);
272 myVehicleTypeFrameParent->myVehicleTypeEditor->refreshVehicleTypeEditorModul();
280 if (myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getChildDemandElements().size() > 0) {
281 std::string plural = myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getChildDemandElements().size() == 1 ? (
"") : (
"s");
283 WRITE_DEBUG(
"Opening FXMessageBox 'remove vType'");
285 FXuint answer = FXMessageBox::question(getApp(), MBOX_YES_NO,
287 (
"Delete " +
toString(
SUMO_TAG_VTYPE) +
" '" + myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getID() +
288 "' will remove " +
toString(myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getChildDemandElements().size()) +
289 " vehicle" + plural +
". Continue?").c_str());
293 WRITE_DEBUG(
"Closed FXMessageBox 'remove vType' with 'No'");
294 }
else if (answer == 4) {
295 WRITE_DEBUG(
"Closed FXMessageBox 'remove vType' with 'ESC'");
299 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_begin(
"delete vehicle type");
301 myVehicleTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType(),
302 myVehicleTypeFrameParent->myViewNet->getUndoList());
304 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_end();
308 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_begin(
"delete vehicle type");
310 myVehicleTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType(),
311 myVehicleTypeFrameParent->myViewNet->getUndoList());
313 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_end();
322 myVehicleTypeFrameParent->getViewNet()->getUndoList()->p_begin(
"reset default vehicle type values");
327 myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->setAttribute(i.getAttr(),
"", myVehicleTypeFrameParent->myViewNet->getUndoList());
332 myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->setAttribute(
SUMO_ATTR_VCLASS,
toString(
SVC_PASSENGER), myVehicleTypeFrameParent->myViewNet->getUndoList());
334 myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->setAttribute(
SUMO_ATTR_VCLASS,
toString(
SVC_BICYCLE), myVehicleTypeFrameParent->myViewNet->getUndoList());
337 myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->setAttribute(
GNE_ATTR_DEFAULT_VTYPE_MODIFIED,
"false", myVehicleTypeFrameParent->myViewNet->getUndoList());
339 myVehicleTypeFrameParent->getViewNet()->getUndoList()->p_end();
341 myVehicleTypeFrameParent->myVehicleTypeSelector->refreshVehicleTypeSelector();
349 std::string vehicleTypeID = myVehicleTypeFrameParent->myViewNet->getNet()->generateDemandElementID(
SUMO_TAG_VTYPE);
357 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_begin(
"copy vehicle type");
359 myVehicleTypeFrameParent->myViewNet->getUndoList()->add(
new GNEChange_DemandElement(vehicleTypeCopy,
true),
true);
361 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_end();
363 myVehicleTypeFrameParent->myVehicleTypeSelector->refreshVehicleTypeSelector();
365 myVehicleTypeFrameParent->myVehicleTypeSelector->setCurrentVehicleType(vehicleTypeCopy);
367 myVehicleTypeFrameParent->myVehicleTypeEditor->refreshVehicleTypeEditorModul();
377 GNEFrame(horizontalFrameParent, viewNet,
"Vehicle Types") {
FXDEFMAP(GNEVehicleTypeFrame::VehicleTypeSelector) vehicleTypeSelectorMap[]
@ MID_GNE_DELETE
delete element
@ MID_GNE_COPY
copy element
@ MID_GNE_CREATE
create element
@ MID_GNE_SET_TYPE
used to select a type of element in a combo box
@ MID_GNE_RESET
reset element
#define GUIDesignComboBox
#define GUIDesignComboBoxNCol
number of column of every combo box
#define GUIDesignGroupBoxFrame
Group box design extended over frame.
@ SVC_PASSENGER
vehicle is a passenger car (a "normal" car)
@ SVC_BICYCLE
vehicle is a bicycle
const std::string DEFAULT_VTYPE_ID
const std::string DEFAULT_BIKETYPE_ID
@ SUMO_TAG_VTYPE
description of a vehicle type
@ GNE_ATTR_DEFAULT_VTYPE
Flag to check if VType is a default VType.
@ GNE_ATTR_DEFAULT_VTYPE_MODIFIED
Flag to check if a default VType was modified.
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
static const GNETagProperties & getTagProperties(SumoXMLTag tag)
get Tag Properties
An Element which don't belongs to GNENet but has influency in the simulation.
void showAttributeEditorModul(bool includeExtended, bool forceAttributeEnabled)
show attributes of multiple ACs
GNEFrame * getFrameParent() const
pointer to GNEFrame parent
GNEViewNet * getViewNet() const
get view net
GNEViewNet * myViewNet
View Net.
FXVerticalFrame * myContentFrame
Vertical frame that holds all widgets of frame.
virtual void show()
show Frame
virtual void hide()
hide Frame
GNEDemandElement * retrieveDemandElement(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named demand element.
Dialog for edit rerouter intervals.
long onCmdDeleteVehicleType(FXObject *, FXSelector, void *)
Called when "Delete Vehicle Type" button is clicked.
FXButton * myResetDefaultVehicleTypeButton
"delete default vehicle type" button
~VehicleTypeEditor()
destructor
long onCmdCreateVehicleType(FXObject *, FXSelector, void *)
long onCmdCopyVehicleType(FXObject *, FXSelector, void *)
Called when "Copy Vehicle Type" button is clicked.
void refreshVehicleTypeEditorModul()
update VehicleTypeEditor modul
long onCmdResetVehicleType(FXObject *, FXSelector, void *)
Called when "Delete Vehicle Type" button is clicked.
void hideVehicleTypeEditorModul()
hide VehicleTypeEditor box
FXButton * myDeleteVehicleTypeButton
"delete vehicle type" button
void showVehicleTypeEditorModul()
show VehicleTypeEditor modul
FXButton * myCreateVehicleTypeButton
"create vehicle type" button
VehicleTypeEditor(GNEVehicleTypeFrame *vehicleTypeFrameParent)
FOX-declaration.
FXButton * myCopyVehicleTypeButton
"copy vehicle type"
~VehicleTypeSelector()
destructor
long onCmdSelectItem(FXObject *, FXSelector, void *)
GNEDemandElement * getCurrentVehicleType() const
get current Vehicle Type
void refreshVehicleTypeSelector()
refresh vehicle type selector
void refreshVehicleTypeSelectorIDs()
refresh vehicle type selector (only IDs, without refreshing attributes)
void setCurrentVehicleType(GNEDemandElement *vType)
set current Vehicle Type
VehicleTypeSelector * getVehicleTypeSelector() const
get vehicle type selector
VehicleTypeEditor * myVehicleTypeEditor
Vehicle Type editor (Create, copy, etc.)
GNEFrameAttributesModuls::AttributesEditor * myVehicleTypeAttributesEditor
editorinternal vehicle type attributes
~GNEVehicleTypeFrame()
Destructor.
GNEFrameAttributesModuls::AttributesEditorExtended * myAttributesEditorExtended
modul for open extended attributes dialog
void attributesEditorExtendedDialogOpened()
open AttributesCreator extended dialog (used for editing advance attributes of Vehicle Types)
void attributeUpdated()
function called after set a valid attribute in AttributeCreator/AttributeEditor/ParametersEditor/....
VehicleTypeSelector * myVehicleTypeSelector
vehicle type selector
GNEVehicleTypeFrame(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet)
Constructor.
GNENet * getNet() const
get the net object
void setInspectedAttributeCarriers(const std::vector< GNEAttributeCarrier * > ACs)
set inspected attributeCarrier
C++ TraCI client API implementation.