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-2018 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 
23 #include <iostream>
32 #include <netedit/GNEViewNet.h>
33 #include <netedit/GNENet.h>
38 #include <netedit/GNEUndoList.h>
39 
41 
42 
43 // ===========================================================================
44 // FOX callback mapping
45 // ===========================================================================
46 
47 FXDEFMAP(GNECalibratorFlowDialog) GNECalibratorFlowDialogMap[] = {
52 };
53 
54 // Object implementation
55 FXIMPLEMENT(GNECalibratorFlowDialog, GNEAdditionalDialog, GNECalibratorFlowDialogMap, ARRAYNUMBER(GNECalibratorFlowDialogMap))
56 
57 // ===========================================================================
58 // member method definitions
59 // ===========================================================================
60 
61 GNECalibratorFlowDialog::GNECalibratorFlowDialog(GNEAdditional* editedCalibratorFlow, bool updatingElement) :
62  GNEAdditionalDialog(editedCalibratorFlow, updatingElement, 600, 280),
63  myCalibratorFlowValid(false),
64  myInvalidAttr(SUMO_ATTR_VEHSPERHOUR) {
65  // change default header
66  std::string typeOfOperation = updatingElement ? "Edit " + myEditedAdditional->getTagStr() + " of " : "Create " + myEditedAdditional->getTagStr() + " for ";
67  changeAdditionalDialogHeader(typeOfOperation + myEditedAdditional->getFirstAdditionalParent()->getTagStr() + " '" + myEditedAdditional->getFirstAdditionalParent()->getID() + "'");
68 
69  // Create auxiliar frames for tables
70  FXHorizontalFrame* columns = new FXHorizontalFrame(myContentFrame, GUIDesignUniformHorizontalFrame);
71  FXVerticalFrame* columnLeftLabel = new FXVerticalFrame(columns, GUIDesignAuxiliarFrame);
72  FXVerticalFrame* columnLeftValue = new FXVerticalFrame(columns, GUIDesignAuxiliarFrame);
73  FXVerticalFrame* columnRightLabel = new FXVerticalFrame(columns, GUIDesignAuxiliarFrame);
74  FXVerticalFrame* columnRightValue = new FXVerticalFrame(columns, GUIDesignAuxiliarFrame);
75 
76  // 1 create combobox for type
77  new FXLabel(columnLeftLabel, toString(SUMO_TAG_VTYPE).c_str(), nullptr, GUIDesignLabelThick);
78  myComboBoxVehicleType = new FXComboBox(columnLeftValue, GUIDesignComboBoxNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignComboBox);
79  // 2 create combobox for route
80  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_ROUTE).c_str(), nullptr, GUIDesignLabelThick);
81  myComboBoxRoute = new FXComboBox(columnLeftValue, GUIDesignComboBoxNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignComboBox);
82  // 3 create textfield for vehs per hour
83  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_VEHSPERHOUR).c_str(), nullptr, GUIDesignLabelThick);
84  myTextFieldVehsPerHour = new FXTextField(columnLeftValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextFieldReal);
85  myTextFieldVehsPerHour->setTextColor(FXRGB(255, 0, 0));
86  // 4 create textfield for vehs per hour
87  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_SPEED).c_str(), nullptr, GUIDesignLabelThick);
88  myTextFieldSpeed = new FXTextField(columnLeftValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextFieldReal);
89  myTextFieldSpeed->setTextColor(FXRGB(255, 0, 0));
90  // 5 create textfield for color
91  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_COLOR).c_str(), nullptr, GUIDesignLabelThick);
92  myTextFieldColor = new FXTextField(columnLeftValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
93  // 6 create textfield for lane
94  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_DEPARTLANE).c_str(), nullptr, GUIDesignLabelThick);
95  myTextFieldDepartLane = new FXTextField(columnLeftValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
96  // 7 create textfield for pos
97  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_DEPARTPOS).c_str(), nullptr, GUIDesignLabelThick);
98  myTextFieldDepartPos = new FXTextField(columnLeftValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
99  // 8 create textfield for speed
100  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_DEPARTSPEED).c_str(), nullptr, GUIDesignLabelThick);
101  myTextFieldDepartSpeed = new FXTextField(columnLeftValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
102  // 9 create textfield for lane
103  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_ARRIVALLANE).c_str(), nullptr, GUIDesignLabelThick);
104  myTextFieldArrivalLane = new FXTextField(columnLeftValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
105  // 10 create textfield for arrival pos
106  new FXLabel(columnLeftLabel, toString(SUMO_ATTR_ARRIVALPOS).c_str(), nullptr, GUIDesignLabelThick);
107  myTextFieldArrivalPos = new FXTextField(columnLeftValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
108  // 11 create textfield for arrival speed
109  new FXLabel(columnRightLabel, toString(SUMO_ATTR_ARRIVALSPEED).c_str(), nullptr, GUIDesignLabelThick);
110  myTextFieldArrivalSpeed = new FXTextField(columnRightValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
111  // 12 create textfield for arrival line
112  new FXLabel(columnRightLabel, toString(SUMO_ATTR_LINE).c_str(), nullptr, GUIDesignLabelThick);
113  myTextFieldLine = new FXTextField(columnRightValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
114  // 13 create textfield for person number
115  new FXLabel(columnRightLabel, toString(SUMO_ATTR_PERSON_NUMBER).c_str(), nullptr, GUIDesignLabelThick);
116  myTextFieldPersonNumber = new FXTextField(columnRightValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextFieldInt);
117  // 14 create textfield for container number
118  new FXLabel(columnRightLabel, toString(SUMO_ATTR_CONTAINER_NUMBER).c_str(), nullptr, GUIDesignLabelThick);
119  myTextFieldContainerNumber = new FXTextField(columnRightValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextFieldInt);
120  // 15 create textfield for reroute
121  new FXLabel(columnRightLabel, toString(SUMO_ATTR_REROUTE).c_str(), nullptr, GUIDesignLabelThick);
122  myRerouteCheckButton = new FXCheckButton(columnRightValue, "false", this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignCheckButtonAttribute);
123  // 16 create textfield for depart pos lat
124  new FXLabel(columnRightLabel, toString(SUMO_ATTR_DEPARTPOS_LAT).c_str(), nullptr, GUIDesignLabelThick);
125  myTextFieldDepartPosLat = new FXTextField(columnRightValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
126  // 17 create textfield for arrival pos lat
127  new FXLabel(columnRightLabel, toString(SUMO_ATTR_ARRIVALPOS_LAT).c_str(), nullptr, GUIDesignLabelThick);
128  myTextFieldArrivalPosLat = new FXTextField(columnRightValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextField);
129  // 18 create textfield for begin
130  new FXLabel(columnRightLabel, toString(SUMO_ATTR_BEGIN).c_str(), nullptr, GUIDesignLabelThick);
131  myTextFieldBegin = new FXTextField(columnRightValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextFieldReal);
132  // 19 create textfield for end
133  new FXLabel(columnRightLabel, toString(SUMO_ATTR_END).c_str(), nullptr, GUIDesignLabelThick);
134  myTextFieldEnd = new FXTextField(columnRightValue, GUIDesignTextFieldNCol, this, MID_GNE_CALIBRATORDIALOG_SET_VARIABLE, GUIDesignTextFieldReal);
135 
136  // fill comboBox of VTypes
137  for (auto i : myEditedAdditional->getViewNet()->getNet()->getAdditionalByType(SUMO_TAG_VTYPE)) {
138  myComboBoxVehicleType->appendItem(i.first.c_str());
139  }
140  myComboBoxVehicleType->setNumVisible((int)myComboBoxVehicleType->getNumItems());
141 
142  // fill comboBox of Routes
143  for (auto i : myEditedAdditional->getViewNet()->getNet()->getAdditionalByType(SUMO_TAG_ROUTE)) {
144  myComboBoxRoute->appendItem(i.first.c_str());
145  }
146  myComboBoxRoute->setNumVisible((int)myComboBoxRoute->getNumItems());
147 
148  // update tables
149  updateCalibratorFlowValues();
150 
151  // start a undo list for editing local to this additional
152  initChanges();
153 
154  // add element if we aren't updating an existent element
155  if (myUpdatingElement == false) {
156  myEditedAdditional->getViewNet()->getUndoList()->add(new GNEChange_Additional(myEditedAdditional, true), true);
157  }
158 
159  // open as modal dialog
160  openAsModalDialog();
161 }
162 
163 
165 
166 
167 long
168 GNECalibratorFlowDialog::onCmdAccept(FXObject*, FXSelector, void*) {
169  std::string operation1 = myUpdatingElement ? ("updating") : ("creating");
170  std::string operation2 = myUpdatingElement ? ("updated") : ("created");
171  std::string parentTagString = myEditedAdditional->getFirstAdditionalParent()->getTagStr();
172  std::string tagString = myEditedAdditional->getTagStr();
173  if (myCalibratorFlowValid == false) {
174  // write warning if netedit is running in testing mode
175  WRITE_DEBUG("Opening FXMessageBox of type 'warning'");
176  // open warning dialog box
177  FXMessageBox::warning(getApp(), MBOX_OK,
178  ("Error " + operation1 + " " + parentTagString + "'s " + tagString).c_str(), "%s",
179  (parentTagString + "'s " + tagString + " cannot be " + operation2 +
180  " because parameter " + toString(myInvalidAttr) +
181  " is invalid.").c_str());
182  // write warning if netedit is running in testing mode
183  WRITE_DEBUG("Closed FXMessageBox of type 'warning' with 'OK'");
184  return 0;
186  // write warning if netedit is running in testing mode
187  WRITE_DEBUG("Opening FXMessageBox of type 'warning'");
188  // open warning dialog box
189  FXMessageBox::warning(getApp(), MBOX_OK,
190  ("Error " + operation1 + " " + parentTagString + "'s " + tagString).c_str(), "%s",
191  (parentTagString + "'s " + tagString + " cannot be " + operation2 +
192  " because there is overlapping with another " + tagString + ".").c_str());
193  // write warning if netedit is running in testing mode
194  WRITE_DEBUG("Closed FXMessageBox of type 'warning' with 'OK'");
195  return 0;
196  } else {
197  // accept changes before closing dialog
198  acceptChanges();
199  // stop dialgo sucesfully
200  getApp()->stopModal(this, TRUE);
201  return 1;
202  }
203 }
204 
205 
206 long
207 GNECalibratorFlowDialog::onCmdCancel(FXObject*, FXSelector, void*) {
208  // cancel changes
209  cancelChanges();
210  // Stop Modal
211  getApp()->stopModal(this, FALSE);
212  return 1;
213 }
214 
215 
216 long
217 GNECalibratorFlowDialog::onCmdReset(FXObject*, FXSelector, void*) {
218  // reset changes
219  resetChanges();
220  // update tables
222  return 1;
223 }
224 
225 
226 long
227 GNECalibratorFlowDialog::onCmdSetVariable(FXObject*, FXSelector, void*) {
228  // At start we assumed, that all values are valid
229  myCalibratorFlowValid = true;
231  // get pointer to undo list (Only for code legilibity)
233  // set color of myComboBoxVehicleType, depending if current value is valid or not
235  myComboBoxVehicleType->setTextColor(FXRGB(0, 0, 0));
237  } else {
238  myComboBoxVehicleType->setTextColor(FXRGB(255, 0, 0));
239  myCalibratorFlowValid = false;
241  }
242  // set color of myComboBoxRoute, depending if current value is valid or not
243  if (myEditedAdditional->isValid(SUMO_ATTR_ROUTE, myComboBoxRoute->getText().text())) {
244  myComboBoxRoute->setTextColor(FXRGB(0, 0, 0));
245  myEditedAdditional->setAttribute(SUMO_ATTR_ROUTE, myComboBoxRoute->getText().text(), undoList);
246  } else {
247  myComboBoxRoute->setTextColor(FXRGB(255, 0, 0));
248  myCalibratorFlowValid = false;
250  }
251  // set color of myTextFieldVehsPerHour, depending if current value is valid or not
253  myTextFieldVehsPerHour->setTextColor(FXRGB(0, 0, 0));
255  } else {
256  myTextFieldVehsPerHour->setTextColor(FXRGB(255, 0, 0));
257  myCalibratorFlowValid = false;
259  }
260  // set color of myTextFieldSpeed, depending if current value is valid or not
261  if (myEditedAdditional->isValid(SUMO_ATTR_SPEED, myTextFieldSpeed->getText().text())) {
262  myTextFieldSpeed->setTextColor(FXRGB(0, 0, 0));
263  myEditedAdditional->setAttribute(SUMO_ATTR_SPEED, myTextFieldSpeed->getText().text(), undoList);
264  // Check VehsPerHour again
266  myTextFieldVehsPerHour->setTextColor(FXRGB(0, 0, 0));
269  myCalibratorFlowValid = true;
271  }
272  }
273  } else {
274  myTextFieldSpeed->setTextColor(FXRGB(255, 0, 0));
275  myCalibratorFlowValid = false;
277  }
278  // set color of myTextFieldColor, depending if current value is valid or not
279  if (myEditedAdditional->isValid(SUMO_ATTR_COLOR, myTextFieldColor->getText().text())) {
280  myTextFieldColor->setTextColor(FXRGB(0, 0, 0));
281  myEditedAdditional->setAttribute(SUMO_ATTR_COLOR, myTextFieldColor->getText().text(), undoList);
282  } else {
283  myTextFieldColor->setTextColor(FXRGB(255, 0, 0));
284  myCalibratorFlowValid = false;
286  }
287  // set color of myTextFieldDepartLane, depending if current value is valid or not
289  myTextFieldDepartLane->setTextColor(FXRGB(0, 0, 0));
291  } else {
292  myTextFieldDepartLane->setTextColor(FXRGB(255, 0, 0));
293  myCalibratorFlowValid = false;
295  }
296  // set color of myTextFieldDepartPos, depending if current value is valid or not
298  myTextFieldDepartPos->setTextColor(FXRGB(0, 0, 0));
300  } else {
301  myTextFieldDepartPos->setTextColor(FXRGB(255, 0, 0));
302  myCalibratorFlowValid = false;
304  }
305  // set color of setDepartSpeed, depending if current value is valid or not
307  myTextFieldDepartSpeed->setTextColor(FXRGB(0, 0, 0));
309  } else {
310  myTextFieldDepartSpeed->setTextColor(FXRGB(255, 0, 0));
311  myCalibratorFlowValid = false;
313  }
314  // set color of myTextFieldArrivalLane, depending if current value is valid or not
316  myTextFieldArrivalLane->setTextColor(FXRGB(0, 0, 0));
318  } else {
319  myTextFieldArrivalLane->setTextColor(FXRGB(255, 0, 0));
320  myCalibratorFlowValid = false;
322  }
323  // set color of myTextFieldArrivalPos, depending if current value is valid or not
325  myTextFieldArrivalPos->setTextColor(FXRGB(0, 0, 0));
327  } else {
328  myTextFieldArrivalPos->setTextColor(FXRGB(255, 0, 0));
329  myCalibratorFlowValid = false;
331  }
332  // set color of setArrivalSpeed, depending if current value is valid or not
334  myTextFieldArrivalSpeed->setTextColor(FXRGB(0, 0, 0));
336  } else {
337  myTextFieldArrivalSpeed->setTextColor(FXRGB(255, 0, 0));
338  myCalibratorFlowValid = false;
340  }
341  // set color of myTextFieldLine, depending if current value is valid or not
342  if (myEditedAdditional->isValid(SUMO_ATTR_LINE, myTextFieldLine->getText().text())) {
343  myTextFieldLine->setTextColor(FXRGB(0, 0, 0));
344  myEditedAdditional->setAttribute(SUMO_ATTR_LINE, myTextFieldLine->getText().text(), undoList);
345  } else {
346  myTextFieldLine->setTextColor(FXRGB(255, 0, 0));
347  myCalibratorFlowValid = false;
349  }
350  // set color of myTextFieldPersonNumber, depending if current value is valid or not
352  myTextFieldPersonNumber->setTextColor(FXRGB(0, 0, 0));
354  } else {
355  myTextFieldPersonNumber->setTextColor(FXRGB(255, 0, 0));
356  myCalibratorFlowValid = false;
358  }
359  // set color of myTextFieldContainerNumber, depending if current value is valid or not
361  myTextFieldContainerNumber->setTextColor(FXRGB(0, 0, 0));
363  } else {
364  myTextFieldContainerNumber->setTextColor(FXRGB(255, 0, 0));
365  myCalibratorFlowValid = false;
367  }
368  // set reroute
369  if (myRerouteCheckButton->getCheck()) {
371  myRerouteCheckButton->setText("true");
372  } else {
374  myRerouteCheckButton->setText("false");
375  }
376  // set color of myTextFieldDepartPosLat, depending if current value is valid or not
378  myTextFieldDepartPosLat->setTextColor(FXRGB(0, 0, 0));
380  } else {
381  myTextFieldDepartPosLat->setTextColor(FXRGB(255, 0, 0));
382  myCalibratorFlowValid = false;
384  }
385  // set color of myTextFieldArrivalPosLat, depending if current value is valid or not
387  myTextFieldArrivalPosLat->setTextColor(FXRGB(0, 0, 0));
389  } else {
390  myTextFieldArrivalPosLat->setTextColor(FXRGB(255, 0, 0));
391  myCalibratorFlowValid = false;
393  }
394  // set color of myTextFieldBegin, depending if current value is valid or not
395  if (myEditedAdditional->isValid(SUMO_ATTR_BEGIN, myTextFieldBegin->getText().text())) {
396  myTextFieldBegin->setTextColor(FXRGB(0, 0, 0));
397  myEditedAdditional->setAttribute(SUMO_ATTR_BEGIN, myTextFieldBegin->getText().text(), undoList);
398  } else {
399  myTextFieldBegin->setTextColor(FXRGB(255, 0, 0));
400  myCalibratorFlowValid = false;
402  }
403  // set color of myTextFieldEnd, depending if current value is valid or not
404  if (myEditedAdditional->isValid(SUMO_ATTR_END, myTextFieldEnd->getText().text())) {
405  myTextFieldEnd->setTextColor(FXRGB(0, 0, 0));
406  myEditedAdditional->setAttribute(SUMO_ATTR_END, myTextFieldEnd->getText().text(), undoList);
407  } else {
408  myTextFieldEnd->setTextColor(FXRGB(255, 0, 0));
409  myCalibratorFlowValid = false;
411  }
412  return 1;
413 }
414 
415 
416 void
418  // update fields
433  myRerouteCheckButton->setCheck(GNEAttributeCarrier::parse<bool>(myEditedAdditional->getAttribute(SUMO_ATTR_REROUTE).c_str()));
438 }
439 
440 
441 /****************************************************************************/
virtual bool isValid(SumoXMLAttr key, const std::string &value)=0
method for checking if the key and their conrrespond attribute are valids
FXTextField * myTextFieldDepartPos
TextField for Depart Pos.
void resetChanges()
reset changes did in this dialog.
#define GUIDesignComboBoxNCol
number of column of every combo box
Definition: GUIDesigns.h:205
#define GUIDesignCheckButtonAttribute
checkButton without thick extended over the frame used for attributes
Definition: GUIDesigns.h:115
description of a vehicle type
FXCheckButton * myRerouteCheckButton
checkButton for Reroute
FXTextField * myTextFieldDepartLane
TextField for Depart Lane.
long onCmdCancel(FXObject *, FXSelector, void *)
event after press cancel button
Dialog to edit sequences, parameters, etc.. of Additionals.
virtual void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)=0
method for setting the attribute and letting the object perform additional changes ...
weights: time range begin
FXTextField * myTextFieldBegin
TextField for Begin.
FXDEFMAP(GNECalibratorFlowDialog) GNECalibratorFlowDialogMap[]
FXTextField * myTextFieldArrivalPos
TextField for Arrival Pos.
FXTextField * myTextFieldArrivalPosLat
TextField for ArrivalPosLat.
virtual std::string getAttribute(SumoXMLAttr key) const =0
begin/end of the description of a route
#define GUIDesignComboBox
Definition: GUIDesigns.h:195
FXTextField * myTextFieldColor
TextField for Color.
GNEUndoList * getUndoList() const
get the undoList object
#define GUIDesignAuxiliarFrame
design for auxiliar (Without borders) frames used to pack another frames extended in all directions ...
Definition: GUIDesigns.h:258
FXComboBox * myComboBoxRoute
TextField for Route.
#define GUIDesignTextField
Definition: GUIDesigns.h:34
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition: ToString.h:49
#define GUIDesignUniformHorizontalFrame
design for horizontal frame used to pack another frames with a uniform width
Definition: GUIDesigns.h:267
bool myUpdatingElement
flag to indicate if additional are being created or modified (cannot be changed after open dialog) ...
FXTextField * myTextFieldDepartPosLat
TextField for DepartPosLat.
FXTextField * myTextFieldSpeed
TextField for Speed.
FXTextField * myTextFieldArrivalLane
TextField for Arrival Lane.
invalid attribute
bool myCalibratorFlowValid
flag to check if current calibrator flow is valid
FXTextField * myTextFieldEnd
TextField for End.
FXTextField * myTextFieldLine
TextField for Line.
#define WRITE_DEBUG(msg)
Definition: MsgHandler.h:248
FXComboBox * myComboBoxVehicleType
ComboBox for Type.
long onCmdAccept(FXObject *, FXSelector, void *)
GNEAdditional * myEditedAdditional
pointer to edited aditional
GNEAdditional * getFirstAdditionalParent() const
FXTextField * myTextFieldArrivalSpeed
TextField for Arrival Speed.
#define GUIDesignTextFieldNCol
Num of column of text field.
Definition: GUIDesigns.h:46
GNEViewNet * getViewNet() const
Returns a pointer to GNEViewNet in which additional element is located.
void acceptChanges()
Accept changes did in this dialog.
An Element which don&#39;t belongs to GNENet but has influency in the simulation.
Definition: GNEAdditional.h:48
FXTextField * myTextFieldDepartSpeed
TextField for Depart Speed.
const std::string & getTagStr() const
get tag assigned to this object in string format
weights: time range end
void cancelChanges()
Cancel changes did in this dialog.
#define GUIDesignLabelThick
label extended over frame with thick and with text justify to left and height of 23 ...
Definition: GUIDesigns.h:154
#define GUIDesignTextFieldInt
text field extended over Frame with thick frame and limited to Integers
Definition: GUIDesigns.h:37
#define GUIDesignTextFieldReal
text field extended over Frame with thick frame and limited to Doubles/doubles
Definition: GUIDesigns.h:40
SumoXMLAttr myInvalidAttr
current sumo attribute invalid
void updateCalibratorFlowValues()
update data fields
long onCmdSetVariable(FXObject *, FXSelector, void *)
event after change value
FXTextField * myTextFieldPersonNumber
TextField for PersonNumber.
FXTextField * myTextFieldVehsPerHour
TextField for VehsPerHour.
Dialog for edit rerouter intervals.
FXTextField * myTextFieldContainerNumber
TextField for Container Number.
bool checkAdditionalChildsOverlapping() const
check if childs are overlapped (Used by Rerouters)
A color information.
long onCmdReset(FXObject *, FXSelector, void *)
event after press reset button