Eclipse SUMO - Simulation of Urban MObility
GNECalibratorFlowDialog.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-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
15 // Dialog for edit calibrator flows
16 /****************************************************************************/
17 
18 // ===========================================================================
19 // included modules
20 // ===========================================================================
21 #include <config.h>
22 
27 #include <netedit/GNEViewNet.h>
28 #include <netedit/GNENet.h>
29 
30 #include <netedit/GNEUndoList.h>
31 
33 
34 
35 // ===========================================================================
36 // FOX callback mapping
37 // ===========================================================================
38 
39 FXDEFMAP(GNECalibratorFlowDialog) GNECalibratorFlowDialogMap[] = {
44 };
45 
46 // Object implementation
47 FXIMPLEMENT(GNECalibratorFlowDialog, GNEAdditionalDialog, GNECalibratorFlowDialogMap, ARRAYNUMBER(GNECalibratorFlowDialogMap))
48 
49 // ===========================================================================
50 // member method definitions
51 // ===========================================================================
52 
53 GNECalibratorFlowDialog::GNECalibratorFlowDialog(GNEAdditional* editedCalibratorFlow, bool updatingElement) :
54  GNEAdditionalDialog(editedCalibratorFlow, updatingElement, 600, 280),
55  myCalibratorFlowValid(false),
56  myInvalidAttr(SUMO_ATTR_VEHSPERHOUR) {
57  // change default header
58  std::string typeOfOperation = updatingElement ? "Edit " + myEditedAdditional->getTagStr() + " of " : "Create " + myEditedAdditional->getTagStr() + " for ";
59  changeAdditionalDialogHeader(typeOfOperation + myEditedAdditional->getAdditionalParents().at(0)->getTagStr() + " '" + myEditedAdditional->getAdditionalParents().at(0)->getID() + "'");
60 
61  // Create auxiliar frames for tables
62  FXHorizontalFrame* columns = new FXHorizontalFrame(myContentFrame, GUIDesignUniformHorizontalFrame);
63  FXVerticalFrame* columnLeftLabel = new FXVerticalFrame(columns, GUIDesignAuxiliarFrame);
64  FXVerticalFrame* columnLeftValue = new FXVerticalFrame(columns, GUIDesignAuxiliarFrame);
65  FXVerticalFrame* columnRightLabel = new FXVerticalFrame(columns, GUIDesignAuxiliarFrame);
66  FXVerticalFrame* columnRightValue = new FXVerticalFrame(columns, GUIDesignAuxiliarFrame);
67 
68  // 1 create combobox for type
69  new FXLabel(columnLeftLabel, toString(SUMO_TAG_VTYPE).c_str(), nullptr, GUIDesignLabelThick);
70  myComboBoxVehicleType = new FXComboBox(columnLeftValue, GUIDesignComboBoxNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignComboBox);
71  // 2 create combobox for route
72  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_ROUTE).c_str(), nullptr, GUIDesignLabelThick);
73  myComboBoxRoute = new FXComboBox(columnLeftValue, GUIDesignComboBoxNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignComboBox);
74  // 3 create textfield for vehs per hour
75  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_VEHSPERHOUR).c_str(), nullptr, GUIDesignLabelThick);
76  myTextFieldVehsPerHour = new FXTextField(columnLeftValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextFieldReal);
77  myTextFieldVehsPerHour->setTextColor(FXRGB(255, 0, 0));
78  // 4 create textfield for vehs per hour
79  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_SPEED).c_str(), nullptr, GUIDesignLabelThick);
80  myTextFieldSpeed = new FXTextField(columnLeftValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextFieldReal);
81  myTextFieldSpeed->setTextColor(FXRGB(255, 0, 0));
82  // 5 create textfield for color
83  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_COLOR).c_str(), nullptr, GUIDesignLabelThick);
84  myTextFieldColor = new FXTextField(columnLeftValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
85  // 6 create textfield for lane
86  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_DEPARTLANE).c_str(), nullptr, GUIDesignLabelThick);
87  myTextFieldDepartLane = new FXTextField(columnLeftValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
88  // 7 create textfield for pos
89  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_DEPARTPOS).c_str(), nullptr, GUIDesignLabelThick);
90  myTextFieldDepartPos = new FXTextField(columnLeftValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
91  // 8 create textfield for speed
92  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_DEPARTSPEED).c_str(), nullptr, GUIDesignLabelThick);
93  myTextFieldDepartSpeed = new FXTextField(columnLeftValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
94  // 9 create textfield for lane
95  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_ARRIVALLANE).c_str(), nullptr, GUIDesignLabelThick);
96  myTextFieldArrivalLane = new FXTextField(columnLeftValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
97  // 10 create textfield for arrival pos
98  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_ARRIVALPOS).c_str(), nullptr, GUIDesignLabelThick);
99  myTextFieldArrivalPos = new FXTextField(columnLeftValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
100  // 11 create textfield for arrival speed
101  new FXLabel(columnRightLabel, toString(SUMO_ATTR_ARRIVALSPEED).c_str(), nullptr, GUIDesignLabelThick);
102  myTextFieldArrivalSpeed = new FXTextField(columnRightValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
103  // 12 create textfield for arrival line
104  new FXLabel(columnRightLabel, toString(SUMO_ATTR_LINE).c_str(), nullptr, GUIDesignLabelThick);
105  myTextFieldLine = new FXTextField(columnRightValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
106  // 13 create textfield for person number
107  new FXLabel(columnRightLabel, toString(SUMO_ATTR_PERSON_NUMBER).c_str(), nullptr, GUIDesignLabelThick);
108  myTextFieldPersonNumber = new FXTextField(columnRightValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextFieldInt);
109  // 14 create textfield for container number
110  new FXLabel(columnRightLabel, toString(SUMO_ATTR_CONTAINER_NUMBER).c_str(), nullptr, GUIDesignLabelThick);
111  myTextFieldContainerNumber = new FXTextField(columnRightValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextFieldInt);
112  // 15 create textfield for reroute
113  new FXLabel(columnRightLabel, toString(SUMO_ATTR_REROUTE).c_str(), nullptr, GUIDesignLabelThick);
114  myRerouteCheckButton = new FXCheckButton(columnRightValue, "false", this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignCheckButton);
115  // 16 create textfield for depart pos lat
116  new FXLabel(columnRightLabel, toString(SUMO_ATTR_DEPARTPOS_LAT).c_str(), nullptr, GUIDesignLabelThick);
117  myTextFieldDepartPosLat = new FXTextField(columnRightValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
118  // 17 create textfield for arrival pos lat
119  new FXLabel(columnRightLabel, toString(SUMO_ATTR_ARRIVALPOS_LAT).c_str(), nullptr, GUIDesignLabelThick);
120  myTextFieldArrivalPosLat = new FXTextField(columnRightValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
121  // 18 create textfield for begin
122  new FXLabel(columnRightLabel, toString(SUMO_ATTR_BEGIN).c_str(), nullptr, GUIDesignLabelThick);
123  myTextFieldBegin = new FXTextField(columnRightValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextFieldReal);
124  // 19 create textfield for end
125  new FXLabel(columnRightLabel, toString(SUMO_ATTR_END).c_str(), nullptr, GUIDesignLabelThick);
126  myTextFieldEnd = new FXTextField(columnRightValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextFieldReal);
127 
128  // fill comboBox of VTypes
129  for (auto i : myEditedAdditional->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(SUMO_TAG_VTYPE)) {
130  myComboBoxVehicleType->appendItem(i.first.c_str());
131  }
132  myComboBoxVehicleType->setNumVisible((int)myComboBoxVehicleType->getNumItems());
133 
134  // fill comboBox of Routes
135  for (auto i : myEditedAdditional->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(SUMO_TAG_ROUTE)) {
136  myComboBoxRoute->appendItem(i.first.c_str());
137  }
138  myComboBoxRoute->setNumVisible((int)myComboBoxRoute->getNumItems());
139 
140  // update tables
141  updateCalibratorFlowValues();
142 
143  // start a undo list for editing local to this additional
144  initChanges();
145 
146  // add element if we aren't updating an existent element
147  if (myUpdatingElement == false) {
148  myEditedAdditional->getViewNet()->getUndoList()->add(new GNEChange_Additional(myEditedAdditional, true), true);
149  }
150 
151  // open as modal dialog
152  openAsModalDialog();
153 }
154 
155 
157 
158 
159 long
160 GNECalibratorFlowDialog::onCmdAccept(FXObject*, FXSelector, void*) {
161  std::string operation1 = myUpdatingElement ? ("updating") : ("creating");
162  std::string operation2 = myUpdatingElement ? ("updated") : ("created");
163  std::string parentTagString = myEditedAdditional->getAdditionalParents().at(0)->getTagStr();
164  std::string tagString = myEditedAdditional->getTagStr();
165  if (myCalibratorFlowValid == false) {
166  // write warning if netedit is running in testing mode
167  WRITE_DEBUG("Opening FXMessageBox of type 'warning'");
168  // open warning dialog box
169  FXMessageBox::warning(getApp(), MBOX_OK,
170  ("Error " + operation1 + " " + parentTagString + "'s " + tagString).c_str(), "%s",
171  (parentTagString + "'s " + tagString + " cannot be " + operation2 +
172  " because parameter " + toString(myInvalidAttr) +
173  " is invalid.").c_str());
174  // write warning if netedit is running in testing mode
175  WRITE_DEBUG("Closed FXMessageBox of type 'warning' with 'OK'");
176  return 0;
177  } else if (!myEditedAdditional->getAdditionalParents().at(0)->checkAdditionalChildrenOverlapping()) {
178  // write warning if netedit is running in testing mode
179  WRITE_DEBUG("Opening FXMessageBox of type 'warning'");
180  // open warning dialog box
181  FXMessageBox::warning(getApp(), MBOX_OK,
182  ("Error " + operation1 + " " + parentTagString + "'s " + tagString).c_str(), "%s",
183  (parentTagString + "'s " + tagString + " cannot be " + operation2 +
184  " because there is overlapping with another " + tagString + ".").c_str());
185  // write warning if netedit is running in testing mode
186  WRITE_DEBUG("Closed FXMessageBox of type 'warning' with 'OK'");
187  return 0;
188  } else {
189  // accept changes before closing dialog
190  acceptChanges();
191  // stop dialgo sucesfully
192  getApp()->stopModal(this, TRUE);
193  return 1;
194  }
195 }
196 
197 
198 long
199 GNECalibratorFlowDialog::onCmdCancel(FXObject*, FXSelector, void*) {
200  // cancel changes
201  cancelChanges();
202  // Stop Modal
203  getApp()->stopModal(this, FALSE);
204  return 1;
205 }
206 
207 
208 long
209 GNECalibratorFlowDialog::onCmdReset(FXObject*, FXSelector, void*) {
210  // reset changes
211  resetChanges();
212  // update tables
214  return 1;
215 }
216 
217 
218 long
219 GNECalibratorFlowDialog::onCmdSetVariable(FXObject*, FXSelector, void*) {
220  // At start we assumed, that all values are valid
221  myCalibratorFlowValid = true;
223  // get pointer to undo list (Only for code legilibity)
225  // set color of myComboBoxVehicleType, depending if current value is valid or not
227  myComboBoxVehicleType->setTextColor(FXRGB(0, 0, 0));
229  } else {
230  myComboBoxVehicleType->setTextColor(FXRGB(255, 0, 0));
231  myCalibratorFlowValid = false;
233  }
234  // set color of myComboBoxRoute, depending if current value is valid or not
235  if (myEditedAdditional->isValid(SUMO_ATTR_ROUTE, myComboBoxRoute->getText().text())) {
236  myComboBoxRoute->setTextColor(FXRGB(0, 0, 0));
237  myEditedAdditional->setAttribute(SUMO_ATTR_ROUTE, myComboBoxRoute->getText().text(), undoList);
238  } else {
239  myComboBoxRoute->setTextColor(FXRGB(255, 0, 0));
240  myCalibratorFlowValid = false;
242  }
243  // set color of myTextFieldVehsPerHour, depending if current value is valid or not
245  myTextFieldVehsPerHour->setTextColor(FXRGB(0, 0, 0));
247  } else {
248  myTextFieldVehsPerHour->setTextColor(FXRGB(255, 0, 0));
249  myCalibratorFlowValid = false;
251  }
252  // set color of myTextFieldSpeed, depending if current value is valid or not
253  if (myEditedAdditional->isValid(SUMO_ATTR_SPEED, myTextFieldSpeed->getText().text())) {
254  myTextFieldSpeed->setTextColor(FXRGB(0, 0, 0));
255  myEditedAdditional->setAttribute(SUMO_ATTR_SPEED, myTextFieldSpeed->getText().text(), undoList);
256  // Check VehsPerHour again
258  myTextFieldVehsPerHour->setTextColor(FXRGB(0, 0, 0));
261  myCalibratorFlowValid = true;
263  }
264  }
265  } else {
266  myTextFieldSpeed->setTextColor(FXRGB(255, 0, 0));
267  myCalibratorFlowValid = false;
269  }
270  // set color of myTextFieldColor, depending if current value is valid or not
271  if (myEditedAdditional->isValid(SUMO_ATTR_COLOR, myTextFieldColor->getText().text())) {
272  myTextFieldColor->setTextColor(FXRGB(0, 0, 0));
273  myEditedAdditional->setAttribute(SUMO_ATTR_COLOR, myTextFieldColor->getText().text(), undoList);
274  } else {
275  myTextFieldColor->setTextColor(FXRGB(255, 0, 0));
276  myCalibratorFlowValid = false;
278  }
279  // set color of myTextFieldDepartLane, depending if current value is valid or not
281  myTextFieldDepartLane->setTextColor(FXRGB(0, 0, 0));
283  } else {
284  myTextFieldDepartLane->setTextColor(FXRGB(255, 0, 0));
285  myCalibratorFlowValid = false;
287  }
288  // set color of myTextFieldDepartPos, depending if current value is valid or not
290  myTextFieldDepartPos->setTextColor(FXRGB(0, 0, 0));
292  } else {
293  myTextFieldDepartPos->setTextColor(FXRGB(255, 0, 0));
294  myCalibratorFlowValid = false;
296  }
297  // set color of setDepartSpeed, depending if current value is valid or not
299  myTextFieldDepartSpeed->setTextColor(FXRGB(0, 0, 0));
301  } else {
302  myTextFieldDepartSpeed->setTextColor(FXRGB(255, 0, 0));
303  myCalibratorFlowValid = false;
305  }
306  // set color of myTextFieldArrivalLane, depending if current value is valid or not
308  myTextFieldArrivalLane->setTextColor(FXRGB(0, 0, 0));
310  } else {
311  myTextFieldArrivalLane->setTextColor(FXRGB(255, 0, 0));
312  myCalibratorFlowValid = false;
314  }
315  // set color of myTextFieldArrivalPos, depending if current value is valid or not
317  myTextFieldArrivalPos->setTextColor(FXRGB(0, 0, 0));
319  } else {
320  myTextFieldArrivalPos->setTextColor(FXRGB(255, 0, 0));
321  myCalibratorFlowValid = false;
323  }
324  // set color of setArrivalSpeed, depending if current value is valid or not
326  myTextFieldArrivalSpeed->setTextColor(FXRGB(0, 0, 0));
328  } else {
329  myTextFieldArrivalSpeed->setTextColor(FXRGB(255, 0, 0));
330  myCalibratorFlowValid = false;
332  }
333  // set color of myTextFieldLine, depending if current value is valid or not
334  if (myEditedAdditional->isValid(SUMO_ATTR_LINE, myTextFieldLine->getText().text())) {
335  myTextFieldLine->setTextColor(FXRGB(0, 0, 0));
336  myEditedAdditional->setAttribute(SUMO_ATTR_LINE, myTextFieldLine->getText().text(), undoList);
337  } else {
338  myTextFieldLine->setTextColor(FXRGB(255, 0, 0));
339  myCalibratorFlowValid = false;
341  }
342  // set color of myTextFieldPersonNumber, depending if current value is valid or not
344  myTextFieldPersonNumber->setTextColor(FXRGB(0, 0, 0));
346  } else {
347  myTextFieldPersonNumber->setTextColor(FXRGB(255, 0, 0));
348  myCalibratorFlowValid = false;
350  }
351  // set color of myTextFieldContainerNumber, depending if current value is valid or not
353  myTextFieldContainerNumber->setTextColor(FXRGB(0, 0, 0));
355  } else {
356  myTextFieldContainerNumber->setTextColor(FXRGB(255, 0, 0));
357  myCalibratorFlowValid = false;
359  }
360  // set reroute
361  if (myRerouteCheckButton->getCheck()) {
363  myRerouteCheckButton->setText("true");
364  } else {
366  myRerouteCheckButton->setText("false");
367  }
368  // set color of myTextFieldDepartPosLat, depending if current value is valid or not
370  myTextFieldDepartPosLat->setTextColor(FXRGB(0, 0, 0));
372  } else {
373  myTextFieldDepartPosLat->setTextColor(FXRGB(255, 0, 0));
374  myCalibratorFlowValid = false;
376  }
377  // set color of myTextFieldArrivalPosLat, depending if current value is valid or not
379  myTextFieldArrivalPosLat->setTextColor(FXRGB(0, 0, 0));
381  } else {
382  myTextFieldArrivalPosLat->setTextColor(FXRGB(255, 0, 0));
383  myCalibratorFlowValid = false;
385  }
386  // set color of myTextFieldBegin, depending if current value is valid or not
387  if (myEditedAdditional->isValid(SUMO_ATTR_BEGIN, myTextFieldBegin->getText().text())) {
388  myTextFieldBegin->setTextColor(FXRGB(0, 0, 0));
389  myEditedAdditional->setAttribute(SUMO_ATTR_BEGIN, myTextFieldBegin->getText().text(), undoList);
390  } else {
391  myTextFieldBegin->setTextColor(FXRGB(255, 0, 0));
392  myCalibratorFlowValid = false;
394  }
395  // set color of myTextFieldEnd, depending if current value is valid or not
396  if (myEditedAdditional->isValid(SUMO_ATTR_END, myTextFieldEnd->getText().text())) {
397  myTextFieldEnd->setTextColor(FXRGB(0, 0, 0));
398  myEditedAdditional->setAttribute(SUMO_ATTR_END, myTextFieldEnd->getText().text(), undoList);
399  } else {
400  myTextFieldEnd->setTextColor(FXRGB(255, 0, 0));
401  myCalibratorFlowValid = false;
403  }
404  return 1;
405 }
406 
407 
408 void
410  // update fields
425  myRerouteCheckButton->setCheck(GNEAttributeCarrier::parse<bool>(myEditedAdditional->getAttribute(SUMO_ATTR_REROUTE).c_str()));
430 }
431 
432 
433 /****************************************************************************/
SUMO_ATTR_TYPE
Definition: SUMOXMLDefinitions.h:382
FXDEFMAP
FXDEFMAP(GNECalibratorFlowDialog) GNECalibratorFlowDialogMap[]
GNEAdditional
An Element which don't belongs to GNENet but has influency in the simulation.
Definition: GNEAdditional.h:47
GUIDesignTextFieldNCol
#define GUIDesignTextFieldNCol
Num of column of text field.
Definition: GUIDesigns.h:58
GUIDesignLabelThick
#define GUIDesignLabelThick
label extended over frame with thick and with text justify to left and height of 23
Definition: GUIDesigns.h:174
GNECalibratorFlowDialog::myRerouteCheckButton
FXCheckButton * myRerouteCheckButton
checkButton for Reroute
Definition: GNECalibratorFlowDialog.h:122
GNECalibratorFlowDialog::myTextFieldDepartLane
FXTextField * myTextFieldDepartLane
TextField for Depart Lane.
Definition: GNECalibratorFlowDialog.h:95
GNECalibratorFlowDialog::~GNECalibratorFlowDialog
~GNECalibratorFlowDialog()
destructor
Definition: GNECalibratorFlowDialog.cpp:156
GNECalibratorFlowDialog::onCmdCancel
long onCmdCancel(FXObject *, FXSelector, void *)
event after press cancel button
Definition: GNECalibratorFlowDialog.cpp:199
GUIDesignUniformHorizontalFrame
#define GUIDesignUniformHorizontalFrame
design for horizontal frame used to pack another frames with a uniform width
Definition: GUIDesigns.h:295
SUMO_ATTR_LINE
Definition: SUMOXMLDefinitions.h:772
GNEChange_Additional
Definition: GNEChange_Additional.h:45
GNEAdditionalDialog
Dialog to edit sequences, parameters, etc.. of Additionals.
Definition: GNEAdditionalDialog.h:45
SUMO_ATTR_ARRIVALPOS_LAT
Definition: SUMOXMLDefinitions.h:439
GNECalibratorFlowDialog
Dialog for edit rerouter intervals.
Definition: GNECalibratorFlowDialog.h:43
GUIDesignComboBoxNCol
#define GUIDesignComboBoxNCol
number of column of every combo box
Definition: GUIDesigns.h:233
GNECalibratorFlowDialog::myTextFieldBegin
FXTextField * myTextFieldBegin
TextField for Begin.
Definition: GNECalibratorFlowDialog.h:131
SUMO_ATTR_COLOR
A color information.
Definition: SUMOXMLDefinitions.h:701
GNECalibratorFlowDialog::myTextFieldArrivalPos
FXTextField * myTextFieldArrivalPos
TextField for Arrival Pos.
Definition: GNECalibratorFlowDialog.h:107
SUMO_ATTR_SPEED
Definition: SUMOXMLDefinitions.h:385
SUMO_ATTR_ARRIVALPOS
Definition: SUMOXMLDefinitions.h:438
GUIDesigns.h
GUIDesignTextFieldInt
#define GUIDesignTextFieldInt
text field extended over Frame with thick frame and limited to Integers
Definition: GUIDesigns.h:37
GNEAdditional::setAttribute
virtual void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)=0
method for setting the attribute and letting the object perform additional changes
SUMO_TAG_VTYPE
description of a vehicle type
Definition: SUMOXMLDefinitions.h:122
GNECalibratorFlowDialog::myTextFieldArrivalPosLat
FXTextField * myTextFieldArrivalPosLat
TextField for ArrivalPosLat.
Definition: GNECalibratorFlowDialog.h:128
GUIDesignTextField
#define GUIDesignTextField
Definition: GUIDesigns.h:34
GUIAppEnum.h
SUMO_ATTR_BEGIN
weights: time range begin
Definition: SUMOXMLDefinitions.h:675
GNEAdditionalDialog::cancelChanges
void cancelChanges()
Cancel changes did in this dialog.
Definition: GNEAdditionalDialog.cpp:136
GNEChange_Additional.h
SUMO_ATTR_PERSON_NUMBER
Definition: SUMOXMLDefinitions.h:649
GNECalibratorFlowDialog.h
GNEAdditional::getAttribute
virtual std::string getAttribute(SumoXMLAttr key) const =0
SUMO_ATTR_ARRIVALSPEED
Definition: SUMOXMLDefinitions.h:440
MID_GNE_ADDITIONALDIALOG_BUTTONRESET
reset button
Definition: GUIAppEnum.h:948
GNECalibratorFlowDialog::myTextFieldColor
FXTextField * myTextFieldColor
TextField for Color.
Definition: GNECalibratorFlowDialog.h:92
GNECalibratorFlowDialog::myTextFieldDepartPosLat
FXTextField * myTextFieldDepartPosLat
TextField for DepartPosLat.
Definition: GNECalibratorFlowDialog.h:125
SUMO_ATTR_NOTHING
invalid attribute
Definition: SUMOXMLDefinitions.h:375
SUMO_ATTR_DEPARTPOS_LAT
Definition: SUMOXMLDefinitions.h:435
GNEViewNet.h
MID_GNE_ADDITIONALDIALOG_BUTTONACCEPT
accept button
Definition: GUIAppEnum.h:944
SUMO_ATTR_DEPARTSPEED
Definition: SUMOXMLDefinitions.h:436
SUMO_ATTR_ROUTE
Definition: SUMOXMLDefinitions.h:441
GNECalibratorFlowDialog::myComboBoxRoute
FXComboBox * myComboBoxRoute
TextField for Route.
Definition: GNECalibratorFlowDialog.h:83
SUMO_ATTR_DEPARTLANE
Definition: SUMOXMLDefinitions.h:433
GNECalibratorFlowDialog::myTextFieldArrivalLane
FXTextField * myTextFieldArrivalLane
TextField for Arrival Lane.
Definition: GNECalibratorFlowDialog.h:104
GNECalibratorFlowDialog::myTextFieldEnd
FXTextField * myTextFieldEnd
TextField for End.
Definition: GNECalibratorFlowDialog.h:134
GUIDesignCheckButton
#define GUIDesignCheckButton
checkButton placed in left position
Definition: GUIDesigns.h:131
SUMO_ATTR_CONTAINER_NUMBER
Definition: SUMOXMLDefinitions.h:650
GNEAdditionalDialog::myUpdatingElement
bool myUpdatingElement
flag to indicate if additional are being created or modified (cannot be changed after open dialog)
Definition: GNEAdditionalDialog.h:86
GNEViewNet::getUndoList
GNEUndoList * getUndoList() const
get the undoList object
Definition: GNEViewNet.cpp:933
GNECalibratorFlowDialog::myTextFieldSpeed
FXTextField * myTextFieldSpeed
TextField for Speed.
Definition: GNECalibratorFlowDialog.h:89
GNECalibratorFlowDialog::myCalibratorFlowValid
bool myCalibratorFlowValid
flag to check if current calibrator flow is valid
Definition: GNECalibratorFlowDialog.h:74
GNECalibratorFlowDialog::myTextFieldArrivalSpeed
FXTextField * myTextFieldArrivalSpeed
TextField for Arrival Speed.
Definition: GNECalibratorFlowDialog.h:110
GNEAdditionalDialog::myEditedAdditional
GNEAdditional * myEditedAdditional
pointer to edited aditional
Definition: GNEAdditionalDialog.h:83
GUIDesignTextFieldReal
#define GUIDesignTextFieldReal
text field extended over Frame with thick frame and limited to doubles/floats
Definition: GUIDesigns.h:40
GNECalibratorFlowDialog::myTextFieldLine
FXTextField * myTextFieldLine
TextField for Line.
Definition: GNECalibratorFlowDialog.h:113
GNECalibratorFlowDialog::myComboBoxVehicleType
FXComboBox * myComboBoxVehicleType
ComboBox for Type.
Definition: GNECalibratorFlowDialog.h:80
toString
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition: ToString.h:48
MID_GNE_ADDITIONALDIALOG_BUTTONCANCEL
cancel button
Definition: GUIAppEnum.h:946
GNECalibratorFlowDialog::myTextFieldDepartSpeed
FXTextField * myTextFieldDepartSpeed
TextField for Depart Speed.
Definition: GNECalibratorFlowDialog.h:101
GNECalibratorFlowDialog::onCmdAccept
long onCmdAccept(FXObject *, FXSelector, void *)
Definition: GNECalibratorFlowDialog.cpp:160
MID_GNE_CALIBRATORDIALOG_SET_VARIABLE
set new variable
Definition: GUIAppEnum.h:1013
GNEHierarchicalElementParents::getAdditionalParents
const std::vector< GNEAdditional * > & getAdditionalParents() const
return vector of additionals that have as Parent this edge (For example, Calibrators)
Definition: GNEHierarchicalElementParents.cpp:86
SUMO_ATTR_REROUTE
Definition: SUMOXMLDefinitions.h:646
GNEAdditionalDialog::acceptChanges
void acceptChanges()
Accept changes did in this dialog.
Definition: GNEAdditionalDialog.cpp:125
GUIDesignComboBox
#define GUIDesignComboBox
Definition: GUIDesigns.h:221
GNEAdditional::getViewNet
GNEViewNet * getViewNet() const
Returns a pointer to GNEViewNet in which additional element is located.
Definition: GNEAdditional.cpp:387
GNECalibrator.h
GUIDesignAuxiliarFrame
#define GUIDesignAuxiliarFrame
design for auxiliar (Without borders) frames used to pack another frames extended in all directions
Definition: GUIDesigns.h:286
SUMO_TAG_ROUTE
begin/end of the description of a route
Definition: SUMOXMLDefinitions.h:126
config.h
GNECalibratorFlowDialog::myTextFieldVehsPerHour
FXTextField * myTextFieldVehsPerHour
TextField for VehsPerHour.
Definition: GNECalibratorFlowDialog.h:86
GNECalibratorFlowDialog::myTextFieldContainerNumber
FXTextField * myTextFieldContainerNumber
TextField for Container Number.
Definition: GNECalibratorFlowDialog.h:119
SUMO_ATTR_END
weights: time range end
Definition: SUMOXMLDefinitions.h:677
SUMO_ATTR_DEPARTPOS
Definition: SUMOXMLDefinitions.h:434
GNEAttributeCarrier::getTagStr
const std::string & getTagStr() const
get tag assigned to this object in string format
Definition: GNEAttributeCarrier.cpp:1165
GNEUndoList
Definition: GNEUndoList.h:49
SUMO_ATTR_VEHSPERHOUR
Definition: SUMOXMLDefinitions.h:783
GNECalibratorFlowDialog::myInvalidAttr
SumoXMLAttr myInvalidAttr
current sumo attribute invalid
Definition: GNECalibratorFlowDialog.h:77
GNECalibratorFlowDialog::onCmdSetVariable
long onCmdSetVariable(FXObject *, FXSelector, void *)
event after change value
Definition: GNECalibratorFlowDialog.cpp:219
GNECalibratorFlowDialog::updateCalibratorFlowValues
void updateCalibratorFlowValues()
update data fields
Definition: GNECalibratorFlowDialog.cpp:409
GNECalibratorFlowDialog::onCmdReset
long onCmdReset(FXObject *, FXSelector, void *)
event after press reset button
Definition: GNECalibratorFlowDialog.cpp:209
GNECalibratorFlowDialog::myTextFieldPersonNumber
FXTextField * myTextFieldPersonNumber
TextField for PersonNumber.
Definition: GNECalibratorFlowDialog.h:116
SUMO_ATTR_ARRIVALLANE
Definition: SUMOXMLDefinitions.h:437
WRITE_DEBUG
#define WRITE_DEBUG(msg)
Definition: MsgHandler.h:246
GNEAdditional::isValid
virtual bool isValid(SumoXMLAttr key, const std::string &value)=0
method for checking if the key and their conrrespond attribute are valids
GNEAdditionalDialog::resetChanges
void resetChanges()
reset changes did in this dialog.
Definition: GNEAdditionalDialog.cpp:142
GNECalibratorFlowDialog::myTextFieldDepartPos
FXTextField * myTextFieldDepartPos
TextField for Depart Pos.
Definition: GNECalibratorFlowDialog.h:98
GNENet.h
GNEUndoList.h