64 myVehicleTypeFrameParent(vehicleTypeFrameParent),
65 myCurrentVehicleType(
nullptr) {
72 for (
const auto& i : myVehicleTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(
SUMO_TAG_VTYPE)) {
74 myTypeMatchBox->appendItem(i.first.c_str());
80 if (myTypeMatchBox->getNumItems() <= 20) {
81 myTypeMatchBox->setNumVisible((
int)myTypeMatchBox->getNumItems());
83 myTypeMatchBox->setNumVisible(20);
95 return myCurrentVehicleType;
101 myCurrentVehicleType = vType;
102 refreshVehicleTypeSelector();
110 myTypeMatchBox->clearItems();
115 for (
const auto& i : myVehicleTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(
SUMO_TAG_VTYPE)) {
117 myTypeMatchBox->appendItem(i.first.c_str());
121 if (myTypeMatchBox->getNumItems() <= 20) {
122 myTypeMatchBox->setNumVisible((
int)myTypeMatchBox->getNumItems());
124 myTypeMatchBox->setNumVisible(20);
127 for (
int i = 0; i < (int)myTypeMatchBox->getNumItems(); i++) {
128 if (myTypeMatchBox->getItem(i).text() == myCurrentVehicleType->getID()) {
129 myTypeMatchBox->setCurrentItem(i);
138 for (
int i = 0; i < (int)myTypeMatchBox->getNumItems(); i++) {
139 if (myTypeMatchBox->getItem(i).text() == myCurrentVehicleType->getID()) {
140 myTypeMatchBox->setCurrentItem(i);
145 myVehicleTypeFrameParent->myVehicleTypeEditor->refreshVehicleTypeEditorModul();
147 myVehicleTypeFrameParent->myVehicleTypeAttributesEditor->showAttributeEditorModul({myCurrentVehicleType},
false);
153 if (myCurrentVehicleType) {
154 myTypeMatchBox->setItem(myTypeMatchBox->getCurrentItem(), myCurrentVehicleType->getID().c_str());
162 for (
const auto& i : myVehicleTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(
SUMO_TAG_VTYPE)) {
163 if (i.first == myTypeMatchBox->getText().text()) {
165 myCurrentVehicleType = i.second;
167 myTypeMatchBox->setTextColor(FXRGB(0, 0, 0));
169 myVehicleTypeFrameParent->myVehicleTypeEditor->refreshVehicleTypeEditorModul();
171 myVehicleTypeFrameParent->myVehicleTypeAttributesEditor->showAttributeEditorModul({myCurrentVehicleType},
false);
173 WRITE_DEBUG((
"Selected item '" + myTypeMatchBox->getText() +
"' in VehicleTypeSelector").text());
177 myCurrentVehicleType =
nullptr;
179 myVehicleTypeFrameParent->myVehicleTypeEditor->refreshVehicleTypeEditorModul();
181 myVehicleTypeFrameParent->myVehicleTypeAttributesEditor->hideAttributesEditorModul();
183 myTypeMatchBox->setTextColor(FXRGB(255, 0, 0));
185 WRITE_DEBUG(
"Selected invalid item in VehicleTypeSelector");
195 myVehicleTypeFrameParent(vehicleTypeFrameParent) {
212 refreshVehicleTypeEditorModul();
226 if (myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType() ==
nullptr) {
228 myDeleteVehicleTypeButton->disable();
229 myResetDefaultVehicleTypeButton->disable();
230 myCopyVehicleTypeButton->disable();
231 }
else if (GNEAttributeCarrier::parse<bool>(myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getAttribute(
GNE_ATTR_DEFAULT_VTYPE))) {
233 myCopyVehicleTypeButton->enable();
235 myDeleteVehicleTypeButton->hide();
236 myResetDefaultVehicleTypeButton->show();
238 if (GNEAttributeCarrier::parse<bool>(myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getAttribute(
GNE_ATTR_DEFAULT_VTYPE_MODIFIED))) {
239 myResetDefaultVehicleTypeButton->enable();
241 myResetDefaultVehicleTypeButton->disable();
245 myCopyVehicleTypeButton->enable();
247 myDeleteVehicleTypeButton->show();
248 myDeleteVehicleTypeButton->enable();
249 myResetDefaultVehicleTypeButton->hide();
259 std::string vehicleTypeID = myVehicleTypeFrameParent->myViewNet->getNet()->generateDemandElementID(
"",
SUMO_TAG_VTYPE);
263 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_begin(
"create vehicle type");
265 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_end();
267 myVehicleTypeFrameParent->myVehicleTypeSelector->setCurrentVehicleType(vehicleType);
269 myVehicleTypeFrameParent->myVehicleTypeEditor->refreshVehicleTypeEditorModul();
277 if (myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getDemandElementChildren().size() > 0) {
278 std::string plural = myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getDemandElementChildren().size() == 1 ? (
"") : (
"s");
280 WRITE_DEBUG(
"Opening FXMessageBox 'remove vType'");
282 FXuint answer = FXMessageBox::question(getApp(), MBOX_YES_NO,
284 (
"Delete " +
toString(
SUMO_TAG_VTYPE) +
" '" + myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getID() +
285 "' will remove " +
toString(myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->getDemandElementChildren().size()) +
286 " vehicle" + plural +
". Continue?").c_str());
290 WRITE_DEBUG(
"Closed FXMessageBox 'remove vType' with 'No'");
291 }
else if (answer == 4) {
292 WRITE_DEBUG(
"Closed FXMessageBox 'remove vType' with 'ESC'");
296 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_begin(
"delete vehicle type");
298 myVehicleTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType(),
299 myVehicleTypeFrameParent->myViewNet->getUndoList());
301 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_end();
305 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_begin(
"delete vehicle type");
307 myVehicleTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType(),
308 myVehicleTypeFrameParent->myViewNet->getUndoList());
310 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_end();
319 myVehicleTypeFrameParent->getViewNet()->getUndoList()->p_begin(
"reset default vehicle type values");
324 myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->setAttribute(i.getAttr(),
"", myVehicleTypeFrameParent->myViewNet->getUndoList());
329 myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->setAttribute(
SUMO_ATTR_VCLASS,
toString(
SVC_PASSENGER), myVehicleTypeFrameParent->myViewNet->getUndoList());
331 myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->setAttribute(
SUMO_ATTR_VCLASS,
toString(
SVC_BICYCLE), myVehicleTypeFrameParent->myViewNet->getUndoList());
334 myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType()->setAttribute(
GNE_ATTR_DEFAULT_VTYPE_MODIFIED,
"false", myVehicleTypeFrameParent->myViewNet->getUndoList());
336 myVehicleTypeFrameParent->getViewNet()->getUndoList()->p_end();
338 myVehicleTypeFrameParent->myVehicleTypeSelector->refreshVehicleTypeSelector();
346 std::string vehicleTypeID = myVehicleTypeFrameParent->myViewNet->getNet()->generateDemandElementID(
"",
SUMO_TAG_VTYPE);
348 GNEVehicleType* vType = dynamic_cast<GNEVehicleType*>(myVehicleTypeFrameParent->myVehicleTypeSelector->getCurrentVehicleType());
354 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_begin(
"copy vehicle type");
356 myVehicleTypeFrameParent->myViewNet->getUndoList()->add(
new GNEChange_DemandElement(vehicleTypeCopy,
true),
true);
358 myVehicleTypeFrameParent->myViewNet->getUndoList()->p_end();
360 myVehicleTypeFrameParent->myVehicleTypeSelector->refreshVehicleTypeSelector();
362 myVehicleTypeFrameParent->myVehicleTypeSelector->setCurrentVehicleType(vehicleTypeCopy);
364 myVehicleTypeFrameParent->myVehicleTypeEditor->refreshVehicleTypeEditorModul();
374 GNEFrame(horizontalFrameParent, viewNet,
"Vehicle Types") {