63 myVehicleTypeFrameParent(vehicleTypeFrameParent),
64 myCurrentVehicleType(
nullptr) {
71 for (
const auto& i : myVehicleTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.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().demandElements.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->myVehicleTypeAttributesEditor->showAttributeEditorModul({myCurrentVehicleType},
false,
true);
152 if (myCurrentVehicleType) {
153 myTypeMatchBox->setItem(myTypeMatchBox->getCurrentItem(), myCurrentVehicleType->getID().c_str());
161 for (
const auto& i : myVehicleTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(
SUMO_TAG_VTYPE)) {
162 if (i.first == myTypeMatchBox->getText().text()) {
164 myCurrentVehicleType = i.second;
166 myTypeMatchBox->setTextColor(FXRGB(0, 0, 0));
168 myVehicleTypeFrameParent->myVehicleTypeEditor->refreshVehicleTypeEditorModul();
170 myVehicleTypeFrameParent->myVehicleTypeAttributesEditor->showAttributeEditorModul({myCurrentVehicleType},
false,
true);
172 WRITE_DEBUG((
"Selected item '" + myTypeMatchBox->getText() +
"' in VehicleTypeSelector").text());
176 myCurrentVehicleType =
nullptr;
178 myVehicleTypeFrameParent->myVehicleTypeEditor->refreshVehicleTypeEditorModul();
180 myVehicleTypeFrameParent->myVehicleTypeAttributesEditor->hideAttributesEditorModul();
182 myTypeMatchBox->setTextColor(FXRGB(255, 0, 0));
184 WRITE_DEBUG(
"Selected invalid item in VehicleTypeSelector");
194 myVehicleTypeFrameParent(vehicleTypeFrameParent) {
211 refreshVehicleTypeEditorModul();
225 if (myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType() ==
nullptr) {
227 myDeleteVehicleTypeButton->disable();
228 myResetDefaultVehicleTypeButton->disable();
229 myCopyVehicleTypeButton->disable();
230 }
else if (GNEAttributeCarrier::parse<bool>(myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getAttribute(
GNE_ATTR_DEFAULT_VTYPE))) {
232 myCopyVehicleTypeButton->enable();
234 myDeleteVehicleTypeButton->hide();
235 myResetDefaultVehicleTypeButton->show();
237 if (GNEAttributeCarrier::parse<bool>(myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getAttribute(
GNE_ATTR_DEFAULT_VTYPE_MODIFIED))) {
238 myResetDefaultVehicleTypeButton->enable();
240 myResetDefaultVehicleTypeButton->disable();
244 myCopyVehicleTypeButton->enable();
246 myDeleteVehicleTypeButton->show();
247 myDeleteVehicleTypeButton->enable();
248 myResetDefaultVehicleTypeButton->hide();
258 std::string vehicleTypeID = myVehicleTypeFrameParent->myViewNet->getNet()->generateDemandElementID(
"",
SUMO_TAG_VTYPE);
262 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_begin(
"create vehicle type");
264 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_end();
266 myVehicleTypeFrameParent->myVehicleTypeSelector->setCurrentVehicleType(vehicleType);
268 myVehicleTypeFrameParent->myVehicleTypeEditor->refreshVehicleTypeEditorModul();
276 if (myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getChildDemandElements().size() > 0) {
277 std::string plural = myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getChildDemandElements().size() == 1 ? (
"") : (
"s");
279 WRITE_DEBUG(
"Opening FXMessageBox 'remove vType'");
281 FXuint answer = FXMessageBox::question(getApp(), MBOX_YES_NO,
283 (
"Delete " +
toString(
SUMO_TAG_VTYPE) +
" '" + myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getID() +
284 "' will remove " +
toString(myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getChildDemandElements().size()) +
285 " vehicle" + plural +
". Continue?").c_str());
289 WRITE_DEBUG(
"Closed FXMessageBox 'remove vType' with 'No'");
290 }
else if (answer == 4) {
291 WRITE_DEBUG(
"Closed FXMessageBox 'remove vType' with 'ESC'");
295 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_begin(
"delete vehicle type");
297 myVehicleTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType(),
298 myVehicleTypeFrameParent->myViewNet->getUndoList());
300 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_end();
304 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_begin(
"delete vehicle type");
306 myVehicleTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType(),
307 myVehicleTypeFrameParent->myViewNet->getUndoList());
309 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_end();
318 myVehicleTypeFrameParent->getViewNet()->getUndoList()->p_begin(
"reset default vehicle type values");
323 myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->setAttribute(i.getAttr(),
"", myVehicleTypeFrameParent->myViewNet->getUndoList());
328 myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->setAttribute(
SUMO_ATTR_VCLASS,
toString(
SVC_PASSENGER), myVehicleTypeFrameParent->myViewNet->getUndoList());
330 myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->setAttribute(
SUMO_ATTR_VCLASS,
toString(
SVC_BICYCLE), myVehicleTypeFrameParent->myViewNet->getUndoList());
333 myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->setAttribute(
GNE_ATTR_DEFAULT_VTYPE_MODIFIED,
"false", myVehicleTypeFrameParent->myViewNet->getUndoList());
335 myVehicleTypeFrameParent->getViewNet()->getUndoList()->p_end();
337 myVehicleTypeFrameParent->myVehicleTypeSelector->refreshVehicleTypeSelector();
345 std::string vehicleTypeID = myVehicleTypeFrameParent->myViewNet->getNet()->generateDemandElementID(
"",
SUMO_TAG_VTYPE);
353 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_begin(
"copy vehicle type");
355 myVehicleTypeFrameParent->myViewNet->getUndoList()->add(
new GNEChange_DemandElement(vehicleTypeCopy,
true),
true);
357 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_end();
359 myVehicleTypeFrameParent->myVehicleTypeSelector->refreshVehicleTypeSelector();
361 myVehicleTypeFrameParent->myVehicleTypeSelector->setCurrentVehicleType(vehicleTypeCopy);
363 myVehicleTypeFrameParent->myVehicleTypeEditor->refreshVehicleTypeEditorModul();
373 GNEFrame(horizontalFrameParent, viewNet,
"Vehicle Types") {