60 myVTypeAtributesParent(VTypeAtributesParent) {
68 myComboBoxVClassLabelImage->setBackColor(FXRGBA(255, 255, 255, 255));
70 for (
const auto& i : myVTypeAtributesParent->myVehicleTypeDialog->getEditedDemandElement()->getTagProperty().getAttributeProperties(
SUMO_ATTR_VCLASS).getDiscreteValues()) {
72 myComboBoxVClass->appendItem(i.c_str());
76 if (myComboBoxVClass->getNumItems() > 10) {
77 myComboBoxVClass->setNumVisible(10);
79 myComboBoxVClass->setNumVisible(myComboBoxVClass->getNumItems());
151 myComboBoxVClass->setText(myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getAttribute(
SUMO_ATTR_VCLASS).c_str());
152 setVClassLabelImage();
153 return myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getVClass();
160 if (myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getAttribute(
SUMO_ATTR_VCLASS).empty()) {
164 switch (myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getVClass()) {
256 myVTypeAtributesParent(VTypeAtributesParent) {
267 for (
auto i : VShapeStrings) {
280 if (myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->isValid(
SUMO_ATTR_GUISHAPE, myComboBoxShape->getText().text())) {
281 myComboBoxShape->setTextColor(FXRGB(0, 0, 0));
282 myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->setAttribute(
SUMO_ATTR_GUISHAPE, myComboBoxShape->getText().text(),
283 myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getViewNet()->getUndoList());
284 setVShapeLabelImage();
286 myComboBoxShape->setTextColor(FXRGB(255, 0, 0));
287 myVTypeAtributesParent->myVehicleTypeDialog->myVehicleTypeValid =
false;
295 myComboBoxShape->setText(myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getAttribute(
SUMO_ATTR_GUISHAPE).c_str());
296 setVShapeLabelImage();
398 myVTypeAtributesParent(VTypeAtributesParent),
400 myRowAttrType(rowAttrType),
402 myTextField(nullptr),
403 myComboBox(nullptr) {
418 for (
auto i : values) {
435 if (myRowAttrType == ROWTYPE_COMBOBOX) {
437 if (myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->isValid(myAttr, myComboBox->getText().text())) {
438 myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->setAttribute(myAttr, myComboBox->getText().text(),
439 myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getViewNet()->getUndoList());
443 myComboBox->setTextColor(FXRGB(255, 0, 0));
445 myVTypeAtributesParent->myVehicleTypeDialog->myVehicleTypeValid =
false;
446 myVTypeAtributesParent->myVehicleTypeDialog->myInvalidAttr = myAttr;
448 }
else if (myRowAttrType == ROWTYPE_COLOR) {
450 if (myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->isValid(
SUMO_ATTR_COLOR, myTextField->getText().text())) {
452 if (myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getTagProperty().getDefaultValue(
SUMO_ATTR_COLOR) != myTextField->getText().text()) {
453 myTextField->setTextColor(FXRGB(0, 0, 0));
455 myTextField->setTextColor(FXRGB(195, 195, 195));
457 myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->setAttribute(
SUMO_ATTR_COLOR, myTextField->getText().text(), myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getViewNet()->getUndoList());
459 myTextField->setTextColor(FXRGB(255, 0, 0));
460 myVTypeAtributesParent->myVehicleTypeDialog->myVehicleTypeValid =
false;
461 myVTypeAtributesParent->myVehicleTypeDialog->myInvalidAttr =
SUMO_ATTR_COLOR;
465 if (myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->isValid(myAttr, myTextField->getText().text())) {
466 myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->setAttribute(myAttr, myTextField->getText().text(),
467 myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getViewNet()->getUndoList());
471 myTextField->setTextColor(FXRGB(255, 0, 0));
473 myVTypeAtributesParent->myVehicleTypeDialog->myVehicleTypeValid =
false;
474 myVTypeAtributesParent->myVehicleTypeDialog->myInvalidAttr = myAttr;
484 if (myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->isValid(myAttr, myComboBox->getText().text())) {
485 myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->setAttribute(myAttr, myComboBox->getText().text(),
486 myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getViewNet()->getUndoList());
488 updateValue(defaultValue);
490 myComboBox->setTextColor(FXRGB(255, 0, 0));
492 myVTypeAtributesParent->myVehicleTypeDialog->myVehicleTypeValid =
false;
493 myVTypeAtributesParent->myVehicleTypeDialog->myInvalidAttr = myAttr;
497 if (myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->isValid(myAttr, myTextField->getText().text())) {
498 myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->setAttribute(myAttr, myTextField->getText().text(),
499 myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getViewNet()->getUndoList());
501 updateValue(defaultValue);
503 myTextField->setTextColor(FXRGB(255, 0, 0));
505 myVTypeAtributesParent->myVehicleTypeDialog->myVehicleTypeValid =
false;
506 myVTypeAtributesParent->myVehicleTypeDialog->myInvalidAttr = myAttr;
514 if (myRowAttrType == ROWTYPE_COMBOBOX) {
516 myComboBox->setText(myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getAttribute(myAttr).c_str());
518 if (myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getTagProperty().getDefaultValue(myAttr) != myComboBox->getText().text()) {
519 myComboBox->setTextColor(FXRGB(0, 0, 0));
521 myComboBox->setTextColor(FXRGB(195, 195, 195));
523 }
else if (myRowAttrType == ROWTYPE_COLOR) {
525 myTextField->setText(myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getAttribute(myAttr).c_str());
527 if (myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getTagProperty().getDefaultValue(myAttr) != myTextField->getText().text()) {
528 myTextField->setTextColor(FXRGB(0, 0, 0));
530 myTextField->setTextColor(FXRGB(195, 195, 195));
534 myTextField->setText(myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getAttribute(myAttr).c_str());
536 if (myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getTagProperty().getDefaultValue(myAttr) != myTextField->getText().text()) {
537 myTextField->setTextColor(FXRGB(0, 0, 0));
539 myTextField->setTextColor(FXRGB(195, 195, 195));
549 myComboBox->setText(myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getAttribute(myAttr).c_str());
551 if (defaultValue != myComboBox->getText().text()) {
552 myComboBox->setTextColor(FXRGB(0, 0, 0));
554 myComboBox->setTextColor(FXRGB(195, 195, 195));
558 myTextField->setText(myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getAttribute(myAttr).c_str());
560 if (defaultValue != myTextField->getText().text()) {
561 myTextField->setTextColor(FXRGB(0, 0, 0));
563 myTextField->setTextColor(FXRGB(195, 195, 195));
578 FXColorDialog colordialog(
this, tr(
"Color Dialog"));
579 colordialog.setTarget(
this);
581 if (GNEAttributeCarrier::canParse<RGBColor>(myTextField->getText().text())) {
587 if (colordialog.execute()) {
589 myTextField->setText(newValue.c_str());
590 if (myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->isValid(myAttr, newValue)) {
591 myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->setAttribute(myAttr, newValue, myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getViewNet()->getUndoList());
593 myTextField->setTextColor(FXRGB(0, 0, 0));
594 myTextField->killFocus();
603 FXFileDialog opendialog(
this,
"Open Image");
605 opendialog.setSelectMode(SELECTFILE_EXISTING);
606 opendialog.setPatternList(
"All files (*)");
610 if (opendialog.execute()) {
614 std::string imagePath = opendialog.getFilename().text();
616 if (myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->isValid(myAttr, imagePath)) {
617 myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->setAttribute(myAttr, imagePath, myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getViewNet()->getUndoList());
618 myTextField->setText(imagePath.c_str());
620 myTextField->setTextColor(FXRGB(0, 0, 0));
621 myTextField->killFocus();
630 FXFileDialog opendialog(
this,
"Open OSG File");
632 opendialog.setSelectMode(SELECTFILE_EXISTING);
633 opendialog.setPatternList(
"OSG file (*.obj)");
637 if (opendialog.execute()) {
641 std::string imagePath = opendialog.getFilename().text();
643 if (myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->isValid(myAttr, imagePath)) {
644 myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->setAttribute(myAttr, imagePath, myVTypeAtributesParent->myVehicleTypeDialog->myEditedDemandElement->getViewNet()->getUndoList());
645 myTextField->setText(imagePath.c_str());
647 myTextField->setTextColor(FXRGB(0, 0, 0));
648 myTextField->killFocus();
659 return "crossingGap";
661 return "driveAfterYellowTime";
663 return "driveAfterRedTime";
665 return "driveRedSpeed";
667 return "ignoreKeepClearTime";
669 return "ignoreFoeSpeed";
671 return "ignoreFoeProb";
675 return "timegapMinor";
680 return "cooperative";
698 return "timeToImpatience";
702 return "lookaheadLeft";
704 return "speedGainRight";
706 return "maxSpeedLatStanding";
708 return "maxSpeedLatFactor";
710 return "turnAlignDistance";
712 return "overtakeRight";
732 FXGroupBox* commonAttributes =
new FXGroupBox(firstAuxiliarVerticalFrame,
"Vehicle Type attributes",
GUIDesignGroupBoxFrame);
740 FXGroupBox* JMAttributes =
new FXGroupBox(firstAuxiliarVerticalFrame,
"Junction Model attributes",
GUIDesignGroupBoxFrame);
748 FXGroupBox* LCMAttributes =
new FXGroupBox(firstAuxiliarHorizontalFrame,
"Lane Change Model attributes",
GUIDesignGroupBoxFrame);
757 myVClassRow =
new VClassRow(
this, column);
805 myVShapeRow =
new VShapeRow(
this, column);
947 myTextFieldVehicleTypeID->setText(myVehicleTypeDialog->myEditedDemandElement->getAttribute(
SUMO_ATTR_ID).c_str());
950 myVShapeRow->updateValues();
952 myLaneChangeModel->updateValue();
953 myLatAlignment->updateValue();
954 myColor->updateValue();
961 myWidth->updateValue(
toString(defaultVTypeParameters.
width));
963 myFilename->updateValue();
969 myBoardingDuration->updateValue();
970 myLoadingDuration->updateValue();
971 myMinGapLat->updateValue();
972 myMaxSpeedLat->updateValue();
973 myActionStepLength->updateValue();
974 myProbability->updateValue();
975 myCarriageGap->updateValue();
977 myJMCrossingGap->updateValue();
978 myJMIgnoreKeepclearTime->updateValue();
979 myJMDriveAfterYellowTime->updateValue();
980 myJMDriveAfterRedTime->updateValue();
981 myJMDriveRedSpeed->updateValue();
982 myJMIgnoreFoeProb->updateValue();
983 myJMIgnoreFoeSpeed->updateValue();
984 myJMSigmaMinor->updateValue();
985 myJMTimeGapMinor->updateValue();
986 myJMImpatience->updateValue();
988 myLCAStrategicParam->updateValue();
989 myLCACooperativeParam->updateValue();
990 myLCASpeedgainParam->updateValue();
991 myLCAKeeprightParam->updateValue();
992 myLCASublaneParam->updateValue();
993 myLCAOppositeParam->updateValue();
994 myLCAPushy->updateValue();
995 myLCAPushygap->updateValue();
996 myLCAAssertive->updateValue();
997 myLCAImpatience->updateValue();
998 myLCATimeToImpatience->updateValue();
999 myLCAAccelLat->updateValue();
1000 myLCALookAheadLeft->updateValue();
1001 myLCASpeedGainRight->updateValue();
1002 myLCAMaxSpeedLatStanding->updateValue();
1003 myLCAMaxSpeedLatFactor->updateValue();
1004 myLCATurnAlignmentDistance->updateValue();
1005 myLCAOvertakeRight->updateValue();
1013 myVehicleTypeDialog->myVehicleTypeValid =
true;
1016 if (myVehicleTypeDialog->myEditedDemandElement->isValid(
SUMO_ATTR_ID, myTextFieldVehicleTypeID->getText().text())) {
1017 myTextFieldVehicleTypeID->setTextColor(FXRGB(0, 0, 0));
1018 myVehicleTypeDialog->myEditedDemandElement->setAttribute(
SUMO_ATTR_ID, myTextFieldVehicleTypeID->getText().text(), myVehicleTypeDialog->myEditedDemandElement->getViewNet()->getUndoList());
1019 }
else if (myVehicleTypeDialog->myEditedDemandElement->getAttribute(
SUMO_ATTR_ID) == myTextFieldVehicleTypeID->getText().text()) {
1020 myTextFieldVehicleTypeID->setTextColor(FXRGB(0, 0, 0));
1021 myVehicleTypeDialog->myEditedDemandElement->setAttribute(
SUMO_ATTR_ID, myTextFieldVehicleTypeID->getText().text(), myVehicleTypeDialog->myEditedDemandElement->getViewNet()->getUndoList());
1023 myTextFieldVehicleTypeID->setTextColor(FXRGB(255, 0, 0));
1024 myVehicleTypeDialog->myVehicleTypeValid =
false;
1030 myVShapeRow->setVariable();
1032 myColor->setVariable();
1039 myWidth->setVariable(
toString(defaultVTypeParameters.
width));
1043 myLaneChangeModel->setVariable();
1044 myLatAlignment->setVariable();
1051 myWidth->setVariable(
toString(defaultVTypeParameters.
width));
1053 myFilename->setVariable();
1059 myBoardingDuration->setVariable();
1060 myLoadingDuration->setVariable();
1061 myMinGapLat->setVariable();
1062 myMaxSpeedLat->setVariable();
1063 myActionStepLength->setVariable();
1064 myProbability->setVariable();
1065 myCarriageGap->setVariable();
1067 myJMCrossingGap->setVariable();
1068 myJMIgnoreKeepclearTime->setVariable();
1069 myJMDriveAfterYellowTime->setVariable();
1070 myJMDriveAfterRedTime->setVariable();
1071 myJMDriveRedSpeed->setVariable();
1072 myJMIgnoreFoeProb->setVariable();
1073 myJMIgnoreFoeSpeed->setVariable();
1074 myJMSigmaMinor->setVariable();
1075 myJMTimeGapMinor->setVariable();
1076 myJMImpatience->setVariable();
1078 myLCAStrategicParam->setVariable();
1079 myLCACooperativeParam->setVariable();
1080 myLCASpeedgainParam->setVariable();
1081 myLCAKeeprightParam->setVariable();
1082 myLCASublaneParam->setVariable();
1083 myLCAOppositeParam->setVariable();
1084 myLCAPushy->setVariable();
1085 myLCAPushygap->setVariable();
1086 myLCAAssertive->setVariable();
1087 myLCAImpatience->setVariable();
1088 myLCATimeToImpatience->setVariable();
1089 myLCAAccelLat->setVariable();
1090 myLCALookAheadLeft->setVariable();
1091 myLCASpeedGainRight->setVariable();
1092 myLCAMaxSpeedLatStanding->setVariable();
1093 myLCAMaxSpeedLatFactor->setVariable();
1094 myLCATurnAlignmentDistance->setVariable();
1095 myLCAOvertakeRight->setVariable();
1104 if (obj == myColor->getButton()) {
1105 myColor->openColorDialog();
1106 }
else if (obj == myFilename->getButton()) {
1107 myFilename->openImageFileDialog();
1108 }
else if (obj == myOSGFile->getButton()) {
1109 myFilename->openOSGFileDialog();
1120 myVehicleTypeDialog(vehicleTypeDialog) {
1132 for (
auto i : CFModels) {
1241 for (
const auto& i : myRows) {
1245 myLabelIncompleteAttribute->hide();
1256 myApparentDecelRow->show();
1257 myEmergencyDecelRow->show();
1273 myEmergencyDecelRow->show();
1275 myMinGapFactorRow->show();
1286 myEmergencyDecelRow->show();
1288 myMinGapFactorRow->show();
1289 myTrauLastRow->show();
1296 myEmergencyDecelRow->show();
1297 mySteppingRow->show();
1298 myMinGapFactorRow->show();
1304 myEmergencyDecelRow->show();
1305 mySteppingRow->show();
1306 myMinGapFactorRow->show();
1307 myAdaptFactorRow->show();
1308 myAdaptTimeRow->show();
1314 myEmergencyDecelRow->show();
1317 myMinGapFactorRow->show();
1323 myEmergencyDecelRow->show();
1324 myMinGapFactorRow->show();
1325 mySecurityRow->show();
1326 myEstimationRow->show();
1330 myTrainTypeRow->show();
1336 myEmergencyDecelRow->show();
1337 myMinGapFactorRow->show();
1339 myLabelIncompleteAttribute->show();
1355 myEmergencyDecelRow->show();
1356 myMinGapFactorRow->show();
1358 myLabelIncompleteAttribute->show();
1381 myLabelIncompleteAttribute->show();
1408 myVerticalFrameRows->recalc();
1417 myComboBoxCarFollowModel->setCurrentItem(0);
1419 myComboBoxCarFollowModel->setText(myVehicleTypeDialog->myEditedDemandElement->getAttribute(
SUMO_ATTR_CAR_FOLLOW_MODEL).c_str());
1424 for (
const auto& i : myRows) {
1433 myVehicleTypeDialog->myVehicleTypeValid =
true;
1436 if (myVehicleTypeDialog->myEditedDemandElement->isValid(
SUMO_ATTR_CAR_FOLLOW_MODEL, myComboBoxCarFollowModel->getText().text())) {
1437 myComboBoxCarFollowModel->setTextColor(FXRGB(0, 0, 0));
1438 myVehicleTypeDialog->myEditedDemandElement->setAttribute(
SUMO_ATTR_CAR_FOLLOW_MODEL, myComboBoxCarFollowModel->getText().text(), myVehicleTypeDialog->myEditedDemandElement->getViewNet()->getUndoList());
1440 myComboBoxCarFollowModel->setTextColor(FXRGB(255, 0, 0));
1441 myVehicleTypeDialog->myVehicleTypeValid =
false;
1445 for (
const auto& i : myRows) {
1500 WRITE_DEBUG(
"Opening FXMessageBox of type 'warning'");
1505 FXMessageBox::warning(getApp(), MBOX_OK,
1506 (
"Error " + operation1 +
" " + tagString).c_str(),
"%s",
1507 (tagString +
" cannot be " + operation2 +
1509 " is invalid.").c_str());
1511 WRITE_DEBUG(
"Closed FXMessageBox of type 'warning' with 'OK'");
1517 getApp()->stopModal(
this, TRUE);
1528 getApp()->stopModal(
this, FALSE);
1550 myCarFollowingModelParametersParent(carFollowingModelParametersParent),
1552 myTextField(nullptr) {
1561 if (myCarFollowingModelParametersParent->myVehicleTypeDialog->myEditedDemandElement->isValid(myAttr, myTextField->getText().text())) {
1563 if (myCarFollowingModelParametersParent->myVehicleTypeDialog->myEditedDemandElement->getTagProperty().getDefaultValue(myAttr) != myTextField->getText().text()) {
1564 myTextField->setTextColor(FXRGB(0, 0, 0));
1566 myTextField->setTextColor(FXRGB(195, 195, 195));
1568 myCarFollowingModelParametersParent->myVehicleTypeDialog->myEditedDemandElement->setAttribute(myAttr, myTextField->getText().text(),
1569 myCarFollowingModelParametersParent->myVehicleTypeDialog->myEditedDemandElement->getViewNet()->getUndoList());
1573 myTextField->setTextColor(FXRGB(255, 0, 0));
1575 myCarFollowingModelParametersParent->myVehicleTypeDialog->myVehicleTypeValid =
false;
1576 myCarFollowingModelParametersParent->myVehicleTypeDialog->myInvalidAttr = myAttr;
1584 myTextField->setText(myCarFollowingModelParametersParent->myVehicleTypeDialog->myEditedDemandElement->getAttribute(myAttr).c_str());
1586 if (myCarFollowingModelParametersParent->myVehicleTypeDialog->myEditedDemandElement->getTagProperty().getDefaultValue(myAttr) != myTextField->getText().text()) {
1587 myTextField->setTextColor(FXRGB(0, 0, 0));
1589 myTextField->setTextColor(FXRGB(195, 195, 195));