Eclipse SUMO - Simulation of Urban MObility
GNERerouterIntervalDialog.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-2020 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials are made available under the
5 // terms of the Eclipse Public License 2.0 which is available at
6 // https://www.eclipse.org/legal/epl-2.0/
7 // This Source Code may also be made available under the following Secondary
8 // Licenses when the conditions for such availability set forth in the Eclipse
9 // Public License 2.0 are satisfied: GNU General Public License, version 2
10 // or later which is available at
11 // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13 /****************************************************************************/
18 // Dialog for edit rerouter intervals
19 /****************************************************************************/
20 #include <config.h>
21 
25 #include <netedit/GNEViewNet.h>
26 #include <netedit/GNENet.h>
27 #include <netedit/GNEUndoList.h>
28 
30 
31 
32 // ===========================================================================
33 // FOX callback mapping
34 // ===========================================================================
35 
36 FXDEFMAP(GNERerouterIntervalDialog) GNERerouterIntervalDialogMap[] = {
37  // called when user click over buttons
43 
44  // clicked table (Double and triple clicks allow to remove element more fast)
60 
61  // use "update" instead of "command" to avoid problems mit icons
68 };
69 
70 // Object implementation
71 FXIMPLEMENT(GNERerouterIntervalDialog, GNEAdditionalDialog, GNERerouterIntervalDialogMap, ARRAYNUMBER(GNERerouterIntervalDialogMap))
72 
73 // ===========================================================================
74 // member method definitions
75 // ===========================================================================
76 
77 GNERerouterIntervalDialog::GNERerouterIntervalDialog(GNEAdditional* rerouterInterval, bool updatingElement) :
78  GNEAdditionalDialog(rerouterInterval, updatingElement, 960, 480),
79  myBeginEndValid(true),
80  myClosingLaneReroutesValid(true),
81  myClosingReroutesValid(true),
82  myDestProbReroutesValid(true),
83  myParkingAreaReroutesValid(true),
84  myRouteProbReroutesValid(true) {
85  // fill closing Reroutes
86  for (auto i : myEditedAdditional->getChildAdditionals()) {
87  if (i->getTagProperty().getTag() == SUMO_TAG_CLOSING_REROUTE) {
88  myClosingReroutesEdited.push_back(i);
89  }
90  }
91  // fill closing Lane Reroutes
92  for (auto i : myEditedAdditional->getChildAdditionals()) {
93  if (i->getTagProperty().getTag() == SUMO_TAG_CLOSING_LANE_REROUTE) {
94  myClosingLaneReroutesEdited.push_back(i);
95  }
96  }
97  // fill Dest Prob Reroutes
98  for (auto i : myEditedAdditional->getChildAdditionals()) {
99  if (i->getTagProperty().getTag() == SUMO_TAG_DEST_PROB_REROUTE) {
100  myDestProbReroutesEdited.push_back(i);
101  }
102  }
103  // fill Route Prob Reroutes
104  for (auto i : myEditedAdditional->getChildAdditionals()) {
105  if (i->getTagProperty().getTag() == SUMO_TAG_ROUTE_PROB_REROUTE) {
106  myRouteProbReroutesEdited.push_back(i);
107  }
108  }
109  // fill Parking Area reroutes
110  for (auto i : myEditedAdditional->getChildAdditionals()) {
111  if (i->getTagProperty().getTag() == SUMO_TAG_PARKING_ZONE_REROUTE) {
112  myParkingAreaRerouteEdited.push_back(i);
113  }
114  }
115  // change default header
116  std::string typeOfOperation = myUpdatingElement ? "Edit " + myEditedAdditional->getTagStr() + " of " : "Create " + myEditedAdditional->getTagStr() + " for ";
117  changeAdditionalDialogHeader(typeOfOperation + myEditedAdditional->getParentAdditionals().at(0)->getTagStr() + " '" + myEditedAdditional->getParentAdditionals().at(0)->getID() + "'");
118 
119  // Create auxiliar frames for tables
120  FXHorizontalFrame* columns = new FXHorizontalFrame(myContentFrame, GUIDesignUniformHorizontalFrame);
121  FXVerticalFrame* columnLeft = new FXVerticalFrame(columns, GUIDesignAuxiliarFrame);
122  FXVerticalFrame* columnRight = new FXVerticalFrame(columns, GUIDesignAuxiliarFrame);
123  FXVerticalFrame* columnRight2 = new FXVerticalFrame(columns, GUIDesignAuxiliarFrame);
124 
125  // create horizontal frame for begin and end label
126  FXHorizontalFrame* beginEndElementsLeft = new FXHorizontalFrame(columnLeft, GUIDesignAuxiliarHorizontalFrame);
127  new FXLabel(beginEndElementsLeft, (toString(SUMO_ATTR_BEGIN) + " and " + toString(SUMO_ATTR_END) + " of " + myEditedAdditional->getTagStr()).c_str(), nullptr, GUIDesignLabelLeftThick);
128  myCheckLabel = new FXLabel(beginEndElementsLeft, "", GUIIconSubSys::getIcon(GUIIcon::CORRECT), GUIDesignLabelIcon32x32Thicked);
129 
130  // create horizontal frame for begin and end text fields
131  FXHorizontalFrame* beginEndElementsRight = new FXHorizontalFrame(columnRight, GUIDesignAuxiliarHorizontalFrame);
132  myBeginTextField = new FXTextField(beginEndElementsRight, GUIDesignTextFieldNCol, this, MID_GNE_REROUTEDIALOG_EDIT_INTERVAL, GUIDesignTextField);
133  myBeginTextField->setText(toString(myEditedAdditional->getAttribute(SUMO_ATTR_BEGIN)).c_str());
134  myEndTextField = new FXTextField(beginEndElementsRight, GUIDesignTextFieldNCol, this, MID_GNE_REROUTEDIALOG_EDIT_INTERVAL, GUIDesignTextField);
135  myEndTextField->setText(toString(myEditedAdditional->getAttribute(SUMO_ATTR_END)).c_str());
136 
137  // Create labels and tables
138  FXHorizontalFrame* buttonAndLabelClosingLaneReroute = new FXHorizontalFrame(columnLeft, GUIDesignAuxiliarHorizontalFrame);
139  myAddClosingLaneReroutes = new FXButton(buttonAndLabelClosingLaneReroute, "", GUIIconSubSys::getIcon(GUIIcon::ADD), this, MID_GNE_REROUTEDIALOG_ADD_CLOSINGLANEREROUTE, GUIDesignButtonIcon);
140  new FXLabel(buttonAndLabelClosingLaneReroute, ("Add new " + toString(SUMO_TAG_CLOSING_LANE_REROUTE) + "s").c_str(), nullptr, GUIDesignLabelThick);
141  myClosingLaneRerouteTable = new FXTable(columnLeft, this, MID_GNE_REROUTEDIALOG_TABLE_CLOSINGLANEREROUTE, GUIDesignTableAdditionals);
142  myClosingLaneRerouteTable->setSelBackColor(FXRGBA(255, 255, 255, 255));
143  myClosingLaneRerouteTable->setSelTextColor(FXRGBA(0, 0, 0, 255));
144 
145  FXHorizontalFrame* buttonAndLabelClosinReroute = new FXHorizontalFrame(columnLeft, GUIDesignAuxiliarHorizontalFrame);
146  myAddClosingReroutes = new FXButton(buttonAndLabelClosinReroute, "", GUIIconSubSys::getIcon(GUIIcon::ADD), this, MID_GNE_REROUTEDIALOG_ADD_CLOSINGREROUTE, GUIDesignButtonIcon);
147  new FXLabel(buttonAndLabelClosinReroute, ("Add new " + toString(SUMO_TAG_CLOSING_REROUTE) + "s").c_str(), nullptr, GUIDesignLabelThick);
148  myClosingRerouteTable = new FXTable(columnLeft, this, MID_GNE_REROUTEDIALOG_TABLE_CLOSINGREROUTE, GUIDesignTableAdditionals);
149  myClosingRerouteTable->setSelBackColor(FXRGBA(255, 255, 255, 255));
150  myClosingRerouteTable->setSelTextColor(FXRGBA(0, 0, 0, 255));
151 
152  FXHorizontalFrame* buttonAndLabelDestProbReroute = new FXHorizontalFrame(columnRight, GUIDesignAuxiliarHorizontalFrame);
153  myAddDestProbReroutes = new FXButton(buttonAndLabelDestProbReroute, "", GUIIconSubSys::getIcon(GUIIcon::ADD), this, MID_GNE_REROUTEDIALOG_ADD_DESTPROBREROUTE, GUIDesignButtonIcon);
154  new FXLabel(buttonAndLabelDestProbReroute, ("Add new " + toString(SUMO_TAG_DEST_PROB_REROUTE) + "s").c_str(), nullptr, GUIDesignLabelThick);
155  myDestProbRerouteTable = new FXTable(columnRight, this, MID_GNE_REROUTEDIALOG_TABLE_DESTPROBREROUTE, GUIDesignTableAdditionals);
156  myDestProbRerouteTable->setSelBackColor(FXRGBA(255, 255, 255, 255));
157  myDestProbRerouteTable->setSelTextColor(FXRGBA(0, 0, 0, 255));
158 
159  FXHorizontalFrame* buttonAndLabelRouteProbReroute = new FXHorizontalFrame(columnRight, GUIDesignAuxiliarHorizontalFrame);
160  myAddRouteProbReroute = new FXButton(buttonAndLabelRouteProbReroute, "", GUIIconSubSys::getIcon(GUIIcon::ADD), this, MID_GNE_REROUTEDIALOG_ADD_ROUTEPROBREROUTE, GUIDesignButtonIcon);
161  FXLabel* routeProbRerouteLabel = new FXLabel(buttonAndLabelRouteProbReroute, ("Add new " + toString(SUMO_TAG_ROUTE_PROB_REROUTE) + "s").c_str(), nullptr, GUIDesignLabelThick);
162  myRouteProbRerouteTable = new FXTable(columnRight, this, MID_GNE_REROUTEDIALOG_TABLE_ROUTEPROBREROUTE, GUIDesignTableAdditionals);
163  myRouteProbRerouteTable->setSelBackColor(FXRGBA(255, 255, 255, 255));
164  myRouteProbRerouteTable->setSelTextColor(FXRGBA(0, 0, 0, 255));
165 
166  FXHorizontalFrame* buttonAndLabelParkingAreaReroute = new FXHorizontalFrame(columnRight2, GUIDesignAuxiliarHorizontalFrame);
167  FXButton* parkingAreaRerouteButton = myAddParkingAreaReroute = new FXButton(buttonAndLabelParkingAreaReroute, "", GUIIconSubSys::getIcon(GUIIcon::ADD), this, MID_GNE_REROUTEDIALOG_ADD_PARKINGAREAREROUTE, GUIDesignButtonIcon);
168  FXLabel* parkingAreaRerouteLabel = new FXLabel(buttonAndLabelParkingAreaReroute, ("Add new " + toString(SUMO_TAG_PARKING_ZONE_REROUTE) + "s").c_str(), nullptr, GUIDesignLabelThick);
169  myParkingAreaRerouteTable = new FXTable(columnRight2, this, MID_GNE_REROUTEDIALOG_TABLE_PARKINGAREAREROUTE, GUIDesignTableAdditionals);
170  myParkingAreaRerouteTable->setSelBackColor(FXRGBA(255, 255, 255, 255));
171  myParkingAreaRerouteTable->setSelTextColor(FXRGBA(0, 0, 0, 255));
172 
173  // disable add parkingAreaReroute Button and change label if there isn't parkingAreas in net
174  if (rerouterInterval->getNet()->getAttributeCarriers()->getAdditionals().at(SUMO_TAG_PARKING_AREA).size() == 0) {
175  parkingAreaRerouteButton->disable();
176  parkingAreaRerouteLabel->setText(("There isn't " + toString(SUMO_TAG_PARKING_AREA) + "s in net").c_str());
177  }
178 
179  // disable add routeProbReroute Button and change label if the rerouter has multiple edges (random routes can only work from one edge)
180  if (rerouterInterval->getParentAdditionals().at(0)->getChildEdges().size() > 1) {
181  myAddRouteProbReroute->disable();
182  routeProbRerouteLabel->setText("Rerouter has more than one edge");
183  }
184 
185  // update tables
186  updateClosingLaneReroutesTable();
187  updateClosingReroutesTable();
188  updateDestProbReroutesTable();
189  updateRouteProbReroutesTable();
190  updateParkingAreaReroutesTable();
191 
192  // start a undo list for editing local to this additional
193  initChanges();
194 
195  // add element if we aren't updating an existent element
196  if (myUpdatingElement == false) {
197  myEditedAdditional->getNet()->getViewNet()->getUndoList()->add(new GNEChange_Additional(myEditedAdditional, true), true);
198  }
199 
200  // Open as modal dialog
201  openAsModalDialog();
202 }
203 
204 
206 
207 
208 long
209 GNERerouterIntervalDialog::onCmdAccept(FXObject*, FXSelector, void*) {
210  // set strings for dialogs
211  std::string errorTitle = "Error" + toString(myUpdatingElement ? "updating" : "creating") + " " + myEditedAdditional->getTagStr() + " of " + myEditedAdditional->getParentAdditionals().at(0)->getTagStr();
212  std::string operationType = myEditedAdditional->getParentAdditionals().at(0)->getTagStr() + "'s " + myEditedAdditional->getTagStr() + " cannot be " + (myUpdatingElement ? "updated" : "created") + " because ";
213  if (myBeginEndValid == false) {
214  // write warning if netedit is running in testing mode
215  WRITE_DEBUG("Opening FXMessageBox of type 'warning'");
216  // open warning Box
217  FXMessageBox::warning(getApp(), MBOX_OK, errorTitle.c_str(), "%s", (operationType + myEditedAdditional->getTagStr() + " defined by " + toString(SUMO_ATTR_BEGIN) + " and " + toString(SUMO_ATTR_END) + " is invalid.").c_str());
218  // write warning if netedit is running in testing mode
219  WRITE_DEBUG("Closed FXMessageBox of type 'warning' with 'OK'");
220  return 0;
221  } else if (myClosingLaneReroutesEdited.empty() &&
222  myClosingReroutesEdited.empty() &&
223  myDestProbReroutesEdited.empty() &&
224  myParkingAreaRerouteEdited.empty() &&
225  myRouteProbReroutesEdited.empty()) {
226  // write warning if netedit is running in testing mode
227  WRITE_DEBUG("Opening FXMessageBox of type 'warning'");
228  // open warning Box
229  FXMessageBox::warning(getApp(), MBOX_OK, errorTitle.c_str(), "%s", (operationType + "at least one " + myEditedAdditional->getTagStr() + "'s element must be defined.").c_str());
230  // write warning if netedit is running in testing mode
231  WRITE_DEBUG("Closed FXMessageBox of type 'warning' with 'OK'");
232  return 0;
233  } else if ((myClosingLaneReroutesEdited.size() > 0) && (myClosingLaneReroutesValid == false)) {
234  // write warning if netedit is running in testing mode
235  WRITE_DEBUG("Opening FXMessageBox of type 'warning'");
236  // open warning Box
237  FXMessageBox::warning(getApp(), MBOX_OK, errorTitle.c_str(), "%s", (operationType + "there are invalid " + toString(SUMO_TAG_CLOSING_LANE_REROUTE) + "s.").c_str());
238  // write warning if netedit is running in testing mode
239  WRITE_DEBUG("Closed FXMessageBox of type 'warning' with 'OK'");
240  return 0;
241  } else if ((myClosingLaneReroutesEdited.size() > 0) && (myClosingReroutesValid == false)) {
242  // write warning if netedit is running in testing mode
243  WRITE_DEBUG("Opening FXMessageBox of type 'warning'");
244  // open warning Box
245  FXMessageBox::warning(getApp(), MBOX_OK, errorTitle.c_str(), "%s", (operationType + "there are invalid " + toString(SUMO_TAG_CLOSING_REROUTE) + "s.").c_str());
246  // write warning if netedit is running in testing mode
247  WRITE_DEBUG("Closed FXMessageBox of type 'warning' with 'OK'");
248  return 0;
249  } else if ((myDestProbReroutesEdited.size() > 0) && (myDestProbReroutesValid == false)) {
250  // write warning if netedit is running in testing mode
251  WRITE_DEBUG("Opening FXMessageBox of type 'warning'");
252  // open warning Box
253  FXMessageBox::warning(getApp(), MBOX_OK, errorTitle.c_str(), "%s", (operationType + "there are invalid " + toString(SUMO_TAG_PARKING_ZONE_REROUTE) + "s.").c_str());
254  // write warning if netedit is running in testing mode
255  WRITE_DEBUG("Closed FXMessageBox of type 'warning' with 'OK'");
256  return 0;
257  } else if ((myParkingAreaRerouteEdited.size() > 0) && (myParkingAreaReroutesValid == false)) {
258  // write warning if netedit is running in testing mode
259  WRITE_DEBUG("Opening FXMessageBox of type 'warning'");
260  // open warning Box
261  FXMessageBox::warning(getApp(), MBOX_OK, errorTitle.c_str(), "%s", (operationType + "there are invalid " + toString(SUMO_TAG_DEST_PROB_REROUTE) + "s.").c_str());
262  // write warning if netedit is running in testing mode
263  WRITE_DEBUG("Closed FXMessageBox of type 'warning' with 'OK'");
264  return 0;
265  } else if ((myRouteProbReroutesEdited.size() > 0) && (myRouteProbReroutesValid == false)) {
266  // write warning if netedit is running in testing mode
267  WRITE_DEBUG("Opening FXMessageBox of type 'warning'");
268  // open warning Box
269  FXMessageBox::warning(getApp(), MBOX_OK, errorTitle.c_str(), "%s", (operationType + "there are invalid " + toString(SUMO_TAG_ROUTE_PROB_REROUTE) + "s.").c_str());
270  // write warning if netedit is running in testing mode
271  WRITE_DEBUG("Closed FXMessageBox of type 'warning' with 'OK'");
272  return 0;
273  } else {
274  // accept changes before closing dialog
275  acceptChanges();
276  // Stop Modal
277  getApp()->stopModal(this, TRUE);
278  return 1;
279  }
280 }
281 
282 
283 long
284 GNERerouterIntervalDialog::onCmdCancel(FXObject*, FXSelector, void*) {
285  // cancel changes
286  cancelChanges();
287  // Stop Modal
288  getApp()->stopModal(this, FALSE);
289  return 1;
290 }
291 
292 
293 long
294 GNERerouterIntervalDialog::onCmdReset(FXObject*, FXSelector, void*) {
295  // reset changes
296  resetChanges();
297  // update tables
302  return 1;
303 }
304 
305 
306 long
308  // first check if there is lanes in the network
309  if (myEditedAdditional->getNet()->getAttributeCarriers()->getEdges().size() > 0) {
310  // get lane
311  GNELane* lane = myEditedAdditional->getNet()->getAttributeCarriers()->getEdges().begin()->second->getLanes().front();
312  // create closing lane reroute
313  GNEClosingLaneReroute* closingLaneReroute = new GNEClosingLaneReroute(myEditedAdditional, lane, SVCAll);
314  // add it using undoList
315  myEditedAdditional->getNet()->getViewNet()->getUndoList()->add(new GNEChange_Additional(closingLaneReroute, true), true);
316  myClosingLaneReroutesEdited.push_back(closingLaneReroute);
317  // update closing lane reroutes table
319  } else {
320  WRITE_WARNING("There is no lanes in the network");
321  }
322  return 1;
323 }
324 
325 
326 long
328  // first check if there is lanes in the network
329  if (myEditedAdditional->getNet()->getAttributeCarriers()->getEdges().size() > 0) {
330  // get edge
331  GNEEdge* edge = myEditedAdditional->getNet()->getAttributeCarriers()->getEdges().begin()->second;
332  // create closing reroute
333  GNEClosingReroute* closingReroute = new GNEClosingReroute(myEditedAdditional, edge, SVCAll);
334  // add it using undoList
335  myEditedAdditional->getNet()->getViewNet()->getUndoList()->add(new GNEChange_Additional(closingReroute, true), true);
336  myClosingReroutesEdited.push_back(closingReroute);
337  // update closing reroutes table
339  } else {
340  WRITE_WARNING("There is no edges in the network");
341  }
342  return 1;
343 }
344 
345 
346 long
348  // first check if there is lanes in the network
349  if (myEditedAdditional->getNet()->getAttributeCarriers()->getEdges().size() > 0) {
350  // get edge
351  GNEEdge* edge = myEditedAdditional->getNet()->getAttributeCarriers()->getEdges().begin()->second;
352  // create closing reroute and add it to table
353  GNEDestProbReroute* destProbReroute = new GNEDestProbReroute(myEditedAdditional, edge, 1);
354  // add it using undoList
355  myEditedAdditional->getNet()->getViewNet()->getUndoList()->add(new GNEChange_Additional(destProbReroute, true), true);
356  myDestProbReroutesEdited.push_back(destProbReroute);
357  // update dest Prob reroutes table
359  } else {
360  WRITE_WARNING("There is no edges in the network");
361  }
362  return 1;
363 }
364 
365 
366 long
368  // create route Prob Reroute
369  GNERouteProbReroute* routeProbReroute = new GNERouteProbReroute(myEditedAdditional, "route_id", 1);
370  myEditedAdditional->getNet()->getViewNet()->getUndoList()->add(new GNEChange_Additional(routeProbReroute, true), true);
371  myRouteProbReroutesEdited.push_back(routeProbReroute);
372  // update route prob reroutes table
374  return 1;
375 }
376 
377 
378 long
380  // first check if there is lanes in the network
382  // get parking area
384  // create parkingAreaReroute and add it to table
385  GNEParkingAreaReroute* parkingAreaReroute = new GNEParkingAreaReroute(myEditedAdditional, parkingArea, 1, 1);
386  // add it using undoList
387  myEditedAdditional->getNet()->getViewNet()->getUndoList()->add(new GNEChange_Additional(parkingAreaReroute, true), true);
388  myParkingAreaRerouteEdited.push_back(parkingAreaReroute);
389  // update dest Prob reroutes table
391  } else {
392  WRITE_WARNING("There is no parking areas in the network");
393  }
394  return 1;
395 }
396 
397 
398 long
400  // check if some delete button was pressed
401  for (int i = 0; i < (int)myClosingLaneReroutesEdited.size(); i++) {
402  if (myClosingLaneRerouteTable->getItem(i, 4)->hasFocus()) {
403  myClosingLaneRerouteTable->removeRows(i);
407  return 1;
408  }
409  }
410  return 0;
411 }
412 
413 
414 long
416  // check if some delete button was pressed
417  for (int i = 0; i < (int)myClosingReroutesEdited.size(); i++) {
418  if (myClosingRerouteTable->getItem(i, 4)->hasFocus()) {
419  myClosingRerouteTable->removeRows(i);
423  return 1;
424  }
425  }
426  return 1;
427 }
428 
429 
430 long
432  // check if some delete button was pressed
433  for (int i = 0; i < (int)myDestProbReroutesEdited.size(); i++) {
434  if (myDestProbRerouteTable->getItem(i, 3)->hasFocus()) {
435  myDestProbRerouteTable->removeRows(i);
439  return 1;
440  }
441  }
442  return 0;
443 }
444 
445 
446 long
448  // check if some delete button was pressed
449  for (int i = 0; i < (int)myRouteProbReroutesEdited.size(); i++) {
450  if (myRouteProbRerouteTable->getItem(i, 3)->hasFocus()) {
451  myRouteProbRerouteTable->removeRows(i);
455  return 1;
456  }
457  }
458  return 0;
459 }
460 
461 
462 long
464  // check if some delete button was pressed
465  for (int i = 0; i < (int)myParkingAreaRerouteEdited.size(); i++) {
466  if (myParkingAreaRerouteTable->getItem(i, 3)->hasFocus()) {
467  ;
468  } else if (myParkingAreaRerouteTable->getItem(i, 4)->hasFocus()) {
469  myParkingAreaRerouteTable->removeRows(i);
473  return 1;
474  }
475  }
476  return 0;
477 }
478 
479 
480 long
483  // iterate over table and check that all parameters are correct
484  for (int i = 0; i < myClosingLaneRerouteTable->getNumRows(); i++) {
485  GNEAdditional* closingLaneReroute = myClosingLaneReroutesEdited.at(i);
486  if (!SUMOXMLDefinitions::isValidNetID(myClosingLaneRerouteTable->getItem(i, 0)->getText().text())) {
489  } else if (closingLaneReroute->isValid(SUMO_ATTR_ALLOW, myClosingLaneRerouteTable->getItem(i, 1)->getText().text()) == false) {
492  } else if (closingLaneReroute->isValid(SUMO_ATTR_DISALLOW, myClosingLaneRerouteTable->getItem(i, 2)->getText().text()) == false) {
495  } else {
496  // check if allow/disallow should be changed
497  bool changeAllow = myClosingLaneRerouteTable->getItem(i, 1)->getText().text() != closingLaneReroute->getAttribute(SUMO_ATTR_ALLOW);
498  bool changeDisallow = myClosingLaneRerouteTable->getItem(i, 2)->getText().text() != closingLaneReroute->getAttribute(SUMO_ATTR_DISALLOW);
499  // set new values in Closing reroute
500  closingLaneReroute->setAttribute(SUMO_ATTR_LANE, myClosingLaneRerouteTable->getItem(i, 0)->getText().text(), myEditedAdditional->getNet()->getViewNet()->getUndoList());
501  if (changeAllow) {
502  closingLaneReroute->setAttribute(SUMO_ATTR_ALLOW, myClosingLaneRerouteTable->getItem(i, 1)->getText().text(), myEditedAdditional->getNet()->getViewNet()->getUndoList());
503  myClosingLaneRerouteTable->getItem(i, 2)->setText(closingLaneReroute->getAttribute(SUMO_ATTR_DISALLOW).c_str());
504 
505  }
506  if (changeDisallow) {
507  closingLaneReroute->setAttribute(SUMO_ATTR_DISALLOW, myClosingLaneRerouteTable->getItem(i, 2)->getText().text(), myEditedAdditional->getNet()->getViewNet()->getUndoList());
508  myClosingLaneRerouteTable->getItem(i, 1)->setText(closingLaneReroute->getAttribute(SUMO_ATTR_ALLOW).c_str());
509  }
510  // set Correct label
512  }
513  }
514  // update list
515  myClosingLaneRerouteTable->update();
516  return 1;
517 }
518 
519 
520 long
522  myClosingReroutesValid = true;
523  // iterate over table and check that all parameters are correct
524  for (int i = 0; i < myClosingRerouteTable->getNumRows(); i++) {
525  GNEAdditional* closingReroute = myClosingReroutesEdited.at(i);
526  if (!SUMOXMLDefinitions::isValidNetID(myClosingRerouteTable->getItem(i, 0)->getText().text())) {
527  myClosingReroutesValid = false;
529  } else if (closingReroute->isValid(SUMO_ATTR_ALLOW, myClosingRerouteTable->getItem(i, 1)->getText().text()) == false) {
530  myClosingReroutesValid = false;
532  } else if (closingReroute->isValid(SUMO_ATTR_DISALLOW, myClosingRerouteTable->getItem(i, 2)->getText().text()) == false) {
533  myClosingReroutesValid = false;
535  } else {
536  // check if allow/disallow should be changed
537  bool changeAllow = myClosingRerouteTable->getItem(i, 1)->getText().text() != closingReroute->getAttribute(SUMO_ATTR_ALLOW);
538  bool changeDisallow = myClosingRerouteTable->getItem(i, 2)->getText().text() != closingReroute->getAttribute(SUMO_ATTR_DISALLOW);
539  // set new values in Closing reroute
540  closingReroute->setAttribute(SUMO_ATTR_EDGE, myClosingRerouteTable->getItem(i, 0)->getText().text(), myEditedAdditional->getNet()->getViewNet()->getUndoList());
541  if (changeAllow) {
542  closingReroute->setAttribute(SUMO_ATTR_ALLOW, myClosingRerouteTable->getItem(i, 1)->getText().text(), myEditedAdditional->getNet()->getViewNet()->getUndoList());
543  myClosingRerouteTable->getItem(i, 2)->setText(closingReroute->getAttribute(SUMO_ATTR_DISALLOW).c_str());
544 
545  }
546  if (changeDisallow) {
547  closingReroute->setAttribute(SUMO_ATTR_DISALLOW, myClosingRerouteTable->getItem(i, 2)->getText().text(), myEditedAdditional->getNet()->getViewNet()->getUndoList());
548  myClosingRerouteTable->getItem(i, 1)->setText(closingReroute->getAttribute(SUMO_ATTR_ALLOW).c_str());
549  }
550  // set Correct label
552  }
553  }
554  // update list
555  myClosingRerouteTable->update();
556  return 1;
557 }
558 
559 
560 long
563  // iterate over table and check that all parameters are correct
564  for (int i = 0; i < myDestProbRerouteTable->getNumRows(); i++) {
565  GNEAdditional* destProbReroute = myDestProbReroutesEdited.at(i);
566  if (!SUMOXMLDefinitions::isValidNetID(myDestProbRerouteTable->getItem(i, 0)->getText().text())) {
567  myDestProbReroutesValid = false;
569  } else if (destProbReroute->isValid(SUMO_ATTR_PROB, myDestProbRerouteTable->getItem(i, 1)->getText().text()) == false) {
570  myDestProbReroutesValid = false;
572  } else {
573  // set new values in Closing reroute
574  destProbReroute->setAttribute(SUMO_ATTR_EDGE, myDestProbRerouteTable->getItem(i, 0)->getText().text(), myEditedAdditional->getNet()->getViewNet()->getUndoList());
575  destProbReroute->setAttribute(SUMO_ATTR_PROB, myDestProbRerouteTable->getItem(i, 1)->getText().text(), myEditedAdditional->getNet()->getViewNet()->getUndoList());
576  // set Correct label
578  }
579  }
580  // update list
581  myDestProbRerouteTable->update();
582  return 1;
583 }
584 
585 
586 long
589  // iterate over table and check that all parameters are correct
590  for (int i = 0; i < myRouteProbRerouteTable->getNumRows(); i++) {
591  GNEAdditional* routeProbReroute = myRouteProbReroutesEdited.at(i);
592  if (!SUMOXMLDefinitions::isValidNetID(myRouteProbRerouteTable->getItem(i, 0)->getText().text())) {
593  myRouteProbReroutesValid = false;
595  } else if (routeProbReroute->isValid(SUMO_ATTR_PROB, myRouteProbRerouteTable->getItem(i, 1)->getText().text()) == false) {
596  myRouteProbReroutesValid = false;
598  } else {
599  // set new values in Closing reroute
600  routeProbReroute->setAttribute(SUMO_ATTR_ROUTE, myRouteProbRerouteTable->getItem(i, 0)->getText().text(), myEditedAdditional->getNet()->getViewNet()->getUndoList());
601  routeProbReroute->setAttribute(SUMO_ATTR_PROB, myRouteProbRerouteTable->getItem(i, 1)->getText().text(), myEditedAdditional->getNet()->getViewNet()->getUndoList());
602  // set Correct label
604  }
605  }
606  // update list
607  myRouteProbRerouteTable->update();
608  return 1;
609 }
610 
611 
612 long
615  // iterate over table and check that all parameters are correct
616  for (int i = 0; i < myParkingAreaRerouteTable->getNumRows(); i++) {
617  GNEAdditional* parkingAreaReroute = myParkingAreaRerouteEdited.at(i);
618  if (!SUMOXMLDefinitions::isValidNetID(myParkingAreaRerouteTable->getItem(i, 0)->getText().text())) {
621  } else if (parkingAreaReroute->isValid(SUMO_ATTR_PROB, myParkingAreaRerouteTable->getItem(i, 1)->getText().text()) == false) {
624  } else if (parkingAreaReroute->isValid(SUMO_ATTR_VISIBLE, myParkingAreaRerouteTable->getItem(i, 2)->getText().text()) == false) {
627  } else {
628  // set new values in Closing reroute
629  parkingAreaReroute->setAttribute(SUMO_ATTR_PARKING, myParkingAreaRerouteTable->getItem(i, 0)->getText().text(), myEditedAdditional->getNet()->getViewNet()->getUndoList());
630  parkingAreaReroute->setAttribute(SUMO_ATTR_PROB, myParkingAreaRerouteTable->getItem(i, 1)->getText().text(), myEditedAdditional->getNet()->getViewNet()->getUndoList());
631  parkingAreaReroute->setAttribute(SUMO_ATTR_VISIBLE, myParkingAreaRerouteTable->getItem(i, 2)->getText().text(), myEditedAdditional->getNet()->getViewNet()->getUndoList());
632  // set Correct label
634  }
635  }
636  // update list
637  myParkingAreaRerouteTable->update();
638  return 1;
639 }
640 
641 
642 long
643 GNERerouterIntervalDialog::onCmdChangeBeginEnd(FXObject*, FXSelector, void*) {
644  if (myEditedAdditional->isValid(SUMO_ATTR_BEGIN, myBeginTextField->getText().text()) &&
646  // set new values in rerouter interval
649  // change icon
650  myBeginEndValid = true;
652  } else {
653  myBeginEndValid = false;
655  }
656  return 0;
657 }
658 
659 
660 void
662  // clear table
663  myClosingLaneRerouteTable->clearItems();
664  // set number of rows
665  myClosingLaneRerouteTable->setTableSize(int(myClosingLaneReroutesEdited.size()), 5);
666  // Configure list
667  myClosingLaneRerouteTable->setVisibleColumns(5);
668  myClosingLaneRerouteTable->setColumnWidth(0, 83);
669  myClosingLaneRerouteTable->setColumnWidth(1, 83);
670  myClosingLaneRerouteTable->setColumnWidth(2, 82);
671  myClosingLaneRerouteTable->setColumnWidth(3, GUIDesignHeight);
672  myClosingLaneRerouteTable->setColumnWidth(4, GUIDesignHeight);
673  myClosingLaneRerouteTable->setColumnText(0, toString(SUMO_ATTR_LANE).c_str());
674  myClosingLaneRerouteTable->setColumnText(1, toString(SUMO_ATTR_ALLOW).c_str());
675  myClosingLaneRerouteTable->setColumnText(2, toString(SUMO_ATTR_DISALLOW).c_str());
676  myClosingLaneRerouteTable->setColumnText(3, "");
677  myClosingLaneRerouteTable->setColumnText(4, "");
678  myClosingLaneRerouteTable->getRowHeader()->setWidth(0);
679  // Declare pointer to FXTableItem
680  FXTableItem* item = nullptr;
681  // iterate over values
682  for (int i = 0; i < (int)myClosingLaneReroutesEdited.size(); i++) {
683  // Set closing edge
684  item = new FXTableItem(myClosingLaneReroutesEdited.at(i)->getAttribute(SUMO_ATTR_LANE).c_str());
685  myClosingLaneRerouteTable->setItem(i, 0, item);
686  // set allow vehicles
687  item = new FXTableItem(myClosingLaneReroutesEdited.at(i)->getAttribute(SUMO_ATTR_ALLOW).c_str());
688  myClosingLaneRerouteTable->setItem(i, 1, item);
689  // set disallow vehicles
690  item = new FXTableItem(myClosingLaneReroutesEdited.at(i)->getAttribute(SUMO_ATTR_DISALLOW).c_str());
691  myClosingLaneRerouteTable->setItem(i, 2, item);
692  // set valid icon
693  item = new FXTableItem("");
695  item->setJustify(FXTableItem::CENTER_X | FXTableItem::CENTER_Y);
696  item->setEnabled(false);
697  myClosingLaneRerouteTable->setItem(i, 3, item);
698  // set remove
699  item = new FXTableItem("", GUIIconSubSys::getIcon(GUIIcon::REMOVE));
700  item->setJustify(FXTableItem::CENTER_X | FXTableItem::CENTER_Y);
701  item->setEnabled(false);
702  myClosingLaneRerouteTable->setItem(i, 4, item);
703  }
704 }
705 
706 
707 void
709  // clear table
710  myClosingRerouteTable->clearItems();
711  // set number of rows
712  myClosingRerouteTable->setTableSize(int(myClosingReroutesEdited.size()), 5);
713  // Configure list
714  myClosingRerouteTable->setVisibleColumns(5);
715  myClosingRerouteTable->setColumnWidth(0, 83);
716  myClosingRerouteTable->setColumnWidth(1, 83);
717  myClosingRerouteTable->setColumnWidth(2, 82);
718  myClosingRerouteTable->setColumnWidth(3, GUIDesignHeight);
719  myClosingRerouteTable->setColumnWidth(4, GUIDesignHeight);
720  myClosingRerouteTable->setColumnText(0, toString(SUMO_ATTR_EDGE).c_str());
721  myClosingRerouteTable->setColumnText(1, toString(SUMO_ATTR_ALLOW).c_str());
722  myClosingRerouteTable->setColumnText(2, toString(SUMO_ATTR_DISALLOW).c_str());
723  myClosingRerouteTable->setColumnText(3, "");
724  myClosingRerouteTable->setColumnText(4, "");
725  myClosingRerouteTable->getRowHeader()->setWidth(0);
726  // Declare pointer to FXTableItem
727  FXTableItem* item = nullptr;
728  // iterate over values
729  for (int i = 0; i < (int)myClosingReroutesEdited.size(); i++) {
730  // Set closing edge
731  item = new FXTableItem(myClosingReroutesEdited.at(i)->getAttribute(SUMO_ATTR_EDGE).c_str());
732  myClosingRerouteTable->setItem(i, 0, item);
733  // set allow vehicles
734  item = new FXTableItem(myClosingReroutesEdited.at(i)->getAttribute(SUMO_ATTR_ALLOW).c_str());
735  myClosingRerouteTable->setItem(i, 1, item);
736  // set disallow vehicles
737  item = new FXTableItem(myClosingReroutesEdited.at(i)->getAttribute(SUMO_ATTR_DISALLOW).c_str());
738  myClosingRerouteTable->setItem(i, 2, item);
739  // set valid icon
740  item = new FXTableItem("");
742  item->setJustify(FXTableItem::CENTER_X | FXTableItem::CENTER_Y);
743  item->setEnabled(false);
744  myClosingRerouteTable->setItem(i, 3, item);
745  // set remove
746  item = new FXTableItem("", GUIIconSubSys::getIcon(GUIIcon::REMOVE));
747  item->setJustify(FXTableItem::CENTER_X | FXTableItem::CENTER_Y);
748  item->setEnabled(false);
749  myClosingRerouteTable->setItem(i, 4, item);
750  }
751 }
752 
753 
754 void
756  // clear table
757  myDestProbRerouteTable->clearItems();
758  // set number of rows
759  myDestProbRerouteTable->setTableSize(int(myDestProbReroutesEdited.size()), 4);
760  // Configure list
761  myDestProbRerouteTable->setVisibleColumns(4);
762  myDestProbRerouteTable->setColumnWidth(0, 124);
763  myDestProbRerouteTable->setColumnWidth(1, 124);
764  myDestProbRerouteTable->setColumnWidth(2, GUIDesignHeight);
765  myDestProbRerouteTable->setColumnWidth(3, GUIDesignHeight);
766  myDestProbRerouteTable->setColumnText(0, toString(SUMO_ATTR_EDGE).c_str());
767  myDestProbRerouteTable->setColumnText(1, toString(SUMO_ATTR_PROB).c_str());
768  myDestProbRerouteTable->setColumnText(2, "");
769  myDestProbRerouteTable->setColumnText(3, "");
770  myDestProbRerouteTable->getRowHeader()->setWidth(0);
771  // Declare pointer to FXTableItem
772  FXTableItem* item = nullptr;
773  // iterate over values
774  for (int i = 0; i < (int)myDestProbReroutesEdited.size(); i++) {
775  // Set new destination
776  item = new FXTableItem(myDestProbReroutesEdited.at(i)->getAttribute(SUMO_ATTR_EDGE).c_str());
777  myDestProbRerouteTable->setItem(i, 0, item);
778  // Set probability
779  item = new FXTableItem(myDestProbReroutesEdited.at(i)->getAttribute(SUMO_ATTR_PROB).c_str());
780  myDestProbRerouteTable->setItem(i, 1, item);
781  // set valid icon
782  item = new FXTableItem("");
784  item->setJustify(FXTableItem::CENTER_X | FXTableItem::CENTER_Y);
785  item->setEnabled(false);
786  myDestProbRerouteTable->setItem(i, 2, item);
787  // set remove
788  item = new FXTableItem("", GUIIconSubSys::getIcon(GUIIcon::REMOVE));
789  item->setJustify(FXTableItem::CENTER_X | FXTableItem::CENTER_Y);
790  item->setEnabled(false);
791  myDestProbRerouteTable->setItem(i, 3, item);
792  }
793 }
794 
795 
796 void
798  // clear table
799  myRouteProbRerouteTable->clearItems();
800  // set number of rows
801  myRouteProbRerouteTable->setTableSize(int(myRouteProbReroutesEdited.size()), 4);
802  // Configure list
803  myRouteProbRerouteTable->setVisibleColumns(4);
804  myRouteProbRerouteTable->setColumnWidth(0, 124);
805  myRouteProbRerouteTable->setColumnWidth(1, 124);
806  myRouteProbRerouteTable->setColumnWidth(2, GUIDesignHeight);
807  myRouteProbRerouteTable->setColumnWidth(3, GUIDesignHeight);
808  myRouteProbRerouteTable->setColumnText(0, toString(SUMO_ATTR_ROUTE).c_str());
809  myRouteProbRerouteTable->setColumnText(1, toString(SUMO_ATTR_PROB).c_str());
810  myRouteProbRerouteTable->setColumnText(2, "");
811  myRouteProbRerouteTable->setColumnText(3, "");
812  myRouteProbRerouteTable->getRowHeader()->setWidth(0);
813  // Declare pointer to FXTableItem
814  FXTableItem* item = nullptr;
815  // iterate over values
816  for (int i = 0; i < (int)myRouteProbReroutesEdited.size(); i++) {
817  // Set new route
818  item = new FXTableItem(myRouteProbReroutesEdited.at(i)->getAttribute(SUMO_ATTR_ROUTE).c_str());
819  myRouteProbRerouteTable->setItem(i, 0, item);
820  // Set probability
821  item = new FXTableItem(myRouteProbReroutesEdited.at(i)->getAttribute(SUMO_ATTR_PROB).c_str());
822  myRouteProbRerouteTable->setItem(i, 1, item);
823  // set valid icon
824  item = new FXTableItem("");
826  item->setJustify(FXTableItem::CENTER_X | FXTableItem::CENTER_Y);
827  item->setEnabled(false);
828  myRouteProbRerouteTable->setItem(i, 2, item);
829  // set remove
830  item = new FXTableItem("", GUIIconSubSys::getIcon(GUIIcon::REMOVE));
831  item->setJustify(FXTableItem::CENTER_X | FXTableItem::CENTER_Y);
832  item->setEnabled(false);
833  myRouteProbRerouteTable->setItem(i, 3, item);
834  }
835 }
836 
837 
838 void
840  // clear table
841  myParkingAreaRerouteTable->clearItems();
842  // set number of rows
843  myParkingAreaRerouteTable->setTableSize(int(myParkingAreaRerouteEdited.size()), 5);
844  // Configure list
845  myParkingAreaRerouteTable->setVisibleColumns(4);
846  myParkingAreaRerouteTable->setColumnWidth(0, 124);
847  myParkingAreaRerouteTable->setColumnWidth(1, 90);
848  myParkingAreaRerouteTable->setColumnWidth(2, 35);
849  myParkingAreaRerouteTable->setColumnWidth(3, GUIDesignHeight);
850  myParkingAreaRerouteTable->setColumnWidth(4, GUIDesignHeight);
851  myParkingAreaRerouteTable->setColumnText(0, toString(SUMO_ATTR_PARKING).c_str());
852  myParkingAreaRerouteTable->setColumnText(1, toString(SUMO_ATTR_PROB).c_str());
853  myParkingAreaRerouteTable->setColumnText(2, "vis.");
854  myParkingAreaRerouteTable->setColumnText(3, "");
855  myParkingAreaRerouteTable->setColumnText(4, "");
856  myParkingAreaRerouteTable->getRowHeader()->setWidth(0);
857  // Declare pointer to FXTableItem
858  FXTableItem* item = nullptr;
859  // iterate over values
860  for (int i = 0; i < (int)myParkingAreaRerouteEdited.size(); i++) {
861  // Set new destination
862  item = new FXTableItem(myParkingAreaRerouteEdited.at(i)->getAttribute(SUMO_ATTR_PARKING).c_str());
863  myParkingAreaRerouteTable->setItem(i, 0, item);
864  // Set probability
865  item = new FXTableItem(myParkingAreaRerouteEdited.at(i)->getAttribute(SUMO_ATTR_PROB).c_str());
866  myParkingAreaRerouteTable->setItem(i, 1, item);
867  // Set visible
868  item = new FXTableItem(myParkingAreaRerouteEdited.at(i)->getAttribute(SUMO_ATTR_VISIBLE) == "1" ? "true" : "false");
869  myParkingAreaRerouteTable->setItem(i, 2, item);
870  // set valid icon
871  item = new FXTableItem("");
873  item->setJustify(FXTableItem::CENTER_X | FXTableItem::CENTER_Y);
874  item->setEnabled(false);
875  myParkingAreaRerouteTable->setItem(i, 3, item);
876  // set remove
877  item = new FXTableItem("", GUIIconSubSys::getIcon(GUIIcon::REMOVE));
878  item->setJustify(FXTableItem::CENTER_X | FXTableItem::CENTER_Y);
879  item->setEnabled(false);
880  myParkingAreaRerouteTable->setItem(i, 4, item);
881  }
882 }
883 
884 
885 /****************************************************************************/
FXDEFMAP(GNERerouterIntervalDialog) GNERerouterIntervalDialogMap[]
@ MID_GNE_REROUTEDIALOG_EDIT_INTERVAL
edit interval
Definition: GUIAppEnum.h:1150
@ MID_GNE_REROUTEDIALOG_TABLE_PARKINGAREAREROUTE
change table parkingAreaReroute
Definition: GUIAppEnum.h:1134
@ MID_GNE_REROUTEDIALOG_ADD_CLOSINGREROUTE
add closing reroute
Definition: GUIAppEnum.h:1142
@ MID_GNE_REROUTEDIALOG_TABLE_CLOSINGLANEREROUTE
change table closing lane reroute reroute
Definition: GUIAppEnum.h:1126
@ MID_GNE_REROUTEDIALOG_ADD_CLOSINGLANEREROUTE
add closing lane reroute
Definition: GUIAppEnum.h:1140
@ MID_GNE_REROUTEDIALOG_TABLE_ROUTEPROBREROUTE
change table route probability reroute
Definition: GUIAppEnum.h:1132
@ MID_GNE_REROUTEDIALOG_ADD_PARKINGAREAREROUTE
add parkingAreaReroute
Definition: GUIAppEnum.h:1148
@ MID_GNE_REROUTEDIALOG_ADD_DESTPROBREROUTE
add destiny probability route
Definition: GUIAppEnum.h:1144
@ MID_GNE_REROUTEDIALOG_TABLE_DESTPROBREROUTE
change table destiny probability reroute
Definition: GUIAppEnum.h:1130
@ MID_GNE_REROUTEDIALOG_TABLE_CLOSINGREROUTE
change table route closing reroute
Definition: GUIAppEnum.h:1128
@ MID_GNE_REROUTEDIALOG_ADD_ROUTEPROBREROUTE
add route probability route
Definition: GUIAppEnum.h:1146
#define GUIDesignButtonIcon
button only with icon
Definition: GUIDesigns.h:71
#define GUIDesignTableAdditionals
design for tables used in additional dialogs
Definition: GUIDesigns.h:526
#define GUIDesignHeight
define a standard height for all elements (Change it carefully)
Definition: GUIDesigns.h:31
#define GUIDesignTextField
Definition: GUIDesigns.h:36
#define GUIDesignAuxiliarHorizontalFrame
design for auxiliar (Without borders) horizontal frame used to pack another frames
Definition: GUIDesigns.h:313
#define GUIDesignLabelLeftThick
label extended over frame with thick and with text justify to left
Definition: GUIDesigns.h:187
#define GUIDesignTextFieldNCol
Num of column of text field.
Definition: GUIDesigns.h:54
#define GUIDesignUniformHorizontalFrame
design for horizontal frame used to pack another frames with a uniform width
Definition: GUIDesigns.h:319
#define GUIDesignLabelIcon32x32Thicked
label ticked filled only with an icon of 32x32
Definition: GUIDesigns.h:211
#define GUIDesignLabelThick
label extended over frame with thick and with text justify to left
Definition: GUIDesigns.h:184
#define GUIDesignAuxiliarFrame
design for auxiliar (Without borders) frames used to pack another frames extended in all directions
Definition: GUIDesigns.h:310
#define WRITE_DEBUG(msg)
Definition: MsgHandler.h:286
#define WRITE_WARNING(msg)
Definition: MsgHandler.h:276
const SVCPermissions SVCAll
all VClasses are allowed
@ SUMO_TAG_CLOSING_REROUTE
reroute of type closing
@ SUMO_TAG_PARKING_AREA
A parking area.
@ SUMO_TAG_PARKING_ZONE_REROUTE
entry for an alternative parking zone
@ SUMO_TAG_ROUTE_PROB_REROUTE
probability of route of a reroute
@ SUMO_TAG_DEST_PROB_REROUTE
probability of destiny of a reroute
@ SUMO_TAG_CLOSING_LANE_REROUTE
lane of a reroute of type closing
@ SUMO_ATTR_PARKING
@ SUMO_ATTR_DISALLOW
@ SUMO_ATTR_ALLOW
@ SUMO_ATTR_LANE
@ SUMO_ATTR_EDGE
@ SUMO_ATTR_BEGIN
weights: time range begin
@ SUMO_ATTR_END
weights: time range end
@ SUMO_ATTR_PROB
@ SUMO_ATTR_ROUTE
@ SUMO_ATTR_VISIBLE
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition: ToString.h:44
Dialog to edit sequences, parameters, etc.. of Additionals.
bool myUpdatingElement
flag to indicate if additional are being created or modified (cannot be changed after open dialog)
void acceptChanges()
Accept changes did in this dialog.
void cancelChanges()
Cancel changes did in this dialog.
GNEAdditional * myEditedAdditional
pointer to edited aditional
void resetChanges()
reset changes did in this dialog.
An Element which don't belongs to GNENet but has influency in the simulation.
Definition: GNEAdditional.h:47
virtual std::string getAttribute(SumoXMLAttr key) const =0
virtual void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)=0
method for setting the attribute and letting the object perform additional changes
virtual bool isValid(SumoXMLAttr key, const std::string &value)=0
method for checking if the key and their conrrespond attribute are valids
const std::string & getTagStr() const
get tag assigned to this object in string format
GNENet * getNet() const
get pointer to net
A road/street connecting two junctions (netedit-version)
Definition: GNEEdge.h:49
const std::vector< GNEAdditional * > & getParentAdditionals() const
get parent additionals
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
Definition: GNELane.h:45
const std::map< std::string, GNEEdge * > & getEdges() const
map with the ID and pointer to edges of net
const std::map< SumoXMLTag, std::map< std::string, GNEAdditional * > > & getAdditionals() const
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
retrieve all attribute carriers of Net
Definition: GNENet.cpp:130
GNEViewNet * getViewNet() const
get view net
Definition: GNENet.cpp:2245
Dialog for edit rerouter intervals.
long onCmdAddDestProbReroute(FXObject *, FXSelector, void *)
add dest prob reroute
long onCmdClickedClosingReroute(FXObject *, FXSelector, void *)
remove closing reroute
bool myRouteProbReroutesValid
flag to check if route prob reroutes are valid
long onCmdAddClosingReroute(FXObject *, FXSelector, void *)
add closing reroute
void updateRouteProbReroutesTable()
update data of probabilitry reroutes table
std::vector< GNEAdditional * > myRouteProbReroutesEdited
Route Prob Reroutes edited.
long onCmdClickedClosingLaneReroute(FXObject *, FXSelector, void *)
remove closing lane reroute
void updateClosingLaneReroutesTable()
update data of closing lane reroute table
FXTable * myDestProbRerouteTable
list with destiny probability reroutes
bool myDestProbReroutesValid
flag to check if Destiny probability reroutes are valid
long onCmdClickedRouteProbReroute(FXObject *, FXSelector, void *)
remove route prob reroute
FXTable * myClosingRerouteTable
list with closing reroutes
long onCmdReset(FXObject *, FXSelector, void *)
event after press reset button
FXTextField * myEndTextField
end time text field
long onCmdEditClosingLaneReroute(FXObject *, FXSelector, void *)
/edit closing lane reroute
std::vector< GNEAdditional * > myClosingReroutesEdited
closing Reroutes edited
void updateClosingReroutesTable()
update data of closing reroute table
long onCmdEditRouteProbReroute(FXObject *, FXSelector, void *)
/edit route prob reroute
void updateDestProbReroutesTable()
update data of destiny probabilitry reroute table
FXLabel * myCheckLabel
begin/end time check label
FXTextField * myBeginTextField
begin time text field
std::vector< GNEAdditional * > myClosingLaneReroutesEdited
closing Lane Reroutes edited
FXTable * myParkingAreaRerouteTable
list with parkingAreaReroutes
bool myClosingReroutesValid
flag to check if closing reroutes are valid
long onCmdAddRouteProbReroute(FXObject *, FXSelector, void *)
add route prob reroute
long onCmdChangeBeginEnd(FXObject *, FXSelector, void *)
called when begin or endis changed
long onCmdAddParkingAreaReroute(FXObject *, FXSelector, void *)
add parkingAreaReroute
bool myParkingAreaReroutesValid
flag to check if parkingAreaReroutes are valid
long onCmdAddClosingLaneReroute(FXObject *, FXSelector, void *)
add closing lane reroute
FXTable * myClosingLaneRerouteTable
list with closing lane reroutes
bool myBeginEndValid
flag to check if begin an end are valid
FXTable * myRouteProbRerouteTable
list with route probability reroute
long onCmdEditClosingReroute(FXObject *, FXSelector, void *)
/edit closing reroute
long onCmdClickedParkingAreaReroute(FXObject *, FXSelector, void *)
remove parkingAreaReroute
long onCmdCancel(FXObject *, FXSelector, void *)
event after press cancel button
std::vector< GNEAdditional * > myParkingAreaRerouteEdited
Parking Area reroute edited.
long onCmdEditDestProbReroute(FXObject *, FXSelector, void *)
/edit dest prob reroute
bool myClosingLaneReroutesValid
flag to check if closing lane reroutes are valid
long onCmdClickedDestProbReroute(FXObject *, FXSelector, void *)
remove dest prob reroute
long onCmdAccept(FXObject *, FXSelector, void *)
long onCmdEditParkingAreaReroute(FXObject *, FXSelector, void *)
/edit parkingAreaReroute
std::vector< GNEAdditional * > myDestProbReroutesEdited
Dest Prob Reroutes edited.
void updateParkingAreaReroutesTable()
update data of parkingAreaReroute table
GNEUndoList * getUndoList() const
get the undoList object
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
static bool isValidNetID(const std::string &value)
whether the given string is a valid id for a network element