90 myParent(&app), myChosenValue(0), myChosenTarget(myChosenValue,
nullptr, MID_OPTION),
91 mySpeed(o.getDefaultSpeed()), mySpeedTarget(mySpeed),
93 myChosenTarget.setTarget(
this);
95 new FXVerticalFrame(
this, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0);
97 FXGroupBox* gp =
new FXGroupBox(f1,
"Change Speed",
98 GROUPBOX_TITLE_LEFT | FRAME_RIDGE,
99 0, 0, 0, 0, 4, 4, 1, 1, 2, 0);
102 FXHorizontalFrame* gf1 =
103 new FXHorizontalFrame(gp, LAYOUT_TOP | LAYOUT_LEFT, 0, 0, 0, 0, 10, 10, 5, 5);
104 new FXRadioButton(gf1,
"Default", &myChosenTarget, FXDataTarget::ID_OPTION + 0,
105 ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP,
106 0, 0, 0, 0, 2, 2, 0, 0);
110 FXHorizontalFrame* gf0 =
111 new FXHorizontalFrame(gp, LAYOUT_TOP | LAYOUT_LEFT, 0, 0, 0, 0, 10, 10, 5, 5);
112 new FXRadioButton(gf0,
"Loaded", &myChosenTarget, FXDataTarget::ID_OPTION + 1,
113 ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP,
114 0, 0, 0, 0, 2, 2, 0, 0);
118 FXHorizontalFrame* gf2 =
119 new FXHorizontalFrame(gp, LAYOUT_TOP | LAYOUT_LEFT, 0, 0, 0, 0, 10, 10, 5, 5);
120 new FXRadioButton(gf2,
"Predefined: ", &myChosenTarget, FXDataTarget::ID_OPTION + 2,
121 ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP | LAYOUT_CENTER_Y,
122 0, 0, 0, 0, 2, 2, 0, 0);
124 new FXComboBox(gf2, 10,
this, MID_PRE_DEF,
125 ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP | LAYOUT_CENTER_Y | COMBOBOX_STATIC);
126 myPredefinedValues->appendItem(
"20 km/h");
127 myPredefinedValues->appendItem(
"40 km/h");
128 myPredefinedValues->appendItem(
"60 km/h");
129 myPredefinedValues->appendItem(
"80 km/h");
130 myPredefinedValues->appendItem(
"100 km/h");
131 myPredefinedValues->appendItem(
"120 km/h");
132 myPredefinedValues->appendItem(
"140 km/h");
133 myPredefinedValues->appendItem(
"160 km/h");
134 myPredefinedValues->appendItem(
"180 km/h");
135 myPredefinedValues->appendItem(
"200 km/h");
136 myPredefinedValues->setNumVisible(5);
140 FXHorizontalFrame* gf12 =
141 new FXHorizontalFrame(gp, LAYOUT_TOP | LAYOUT_LEFT, 0, 0, 0, 0, 10, 10, 5, 5);
142 new FXRadioButton(gf12,
"Free Entry: ", &myChosenTarget, FXDataTarget::ID_OPTION + 3,
143 ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP | LAYOUT_CENTER_Y,
144 0, 0, 0, 0, 2, 2, 0, 0);
146 new FXRealSpinner(gf12, 10,
this, MID_USER_DEF,
147 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
150 myUserDefinedSpeed->setIncrement(10);
151 myUserDefinedSpeed->setRange(0, 300);
152 myUserDefinedSpeed->setValue(
153 static_cast<GUILaneSpeedTrigger*>(myObject)->getDefaultSpeed() * 3.6);
155 new FXButton(f1,
"Close",
nullptr,
this, MID_CLOSE,
156 BUTTON_INITIAL | BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT | LAYOUT_CENTER_X, 0, 0, 0, 0, 30, 30, 4, 4);
157 static_cast<GUILaneSpeedTrigger*>(myObject)->setOverriding(
true);
173 mySpeed = (double)(myUserDefinedSpeed->getValue() / 3.6);
174 static_cast<GUILaneSpeedTrigger*>(myObject)->setOverridingValue(mySpeed);
175 myParent->updateChildren();
183 myChosenValue != 3 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
185 myParent->updateChildren();
192 mySpeed = (double)(
double)((myPredefinedValues->getCurrentItem() * 20 + 20) / 3.6);
193 static_cast<GUILaneSpeedTrigger*>(myObject)->setOverridingValue(mySpeed);
194 myParent->updateChildren();
202 myChosenValue != 2 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
204 myParent->updateChildren();
211 static_cast<GUILaneSpeedTrigger*>(myObject)->setOverriding(
true);
212 switch (myChosenValue) {
214 mySpeed = (double) static_cast<GUILaneSpeedTrigger*>(myObject)->getDefaultSpeed();
217 mySpeed = (double) static_cast<GUILaneSpeedTrigger*>(myObject)->getLoadedSpeed();
220 mySpeed = (double)((myPredefinedValues->getCurrentItem() * 20 + 20) / 3.6);
223 mySpeed = (double)(myUserDefinedSpeed->getValue() / 3.6);
229 static_cast<GUILaneSpeedTrigger*>(myObject)->setOverridingValue(mySpeed);
230 myParent->updateChildren();
231 if (myChosenValue == 1) {
233 static_cast<GUILaneSpeedTrigger*>(myObject)->setOverriding(
false);
256 static_cast<GUILaneSpeedTrigger*>(myObject)->openManipulator(
257 *myApplication, *myParent);
266 const std::string&
id,
const std::vector<MSLane*>& destLanes,
267 const std::string& aXMLFilename) :
273 std::vector<MSLane*>::const_iterator i;
274 for (i = destLanes.begin(); i != destLanes.end(); ++i) {
307 ret->
mkItem(
"speed [m/s]",
true,
325 glTranslated(pos.
x(), pos.
y(), 0);
326 glRotated(rot, 0, 0, 1);
327 glTranslated(0, -1.5, 0);
328 glScaled(exaggeration, exaggeration, 1);
331 noPoints = (int)(9.0 + s.
scale / 10.0);
339 glTranslated(0, 0, .1);
348 if (((
int) value + 1) % 10 == 0) {
349 value = (double)(((
int) value + 1) / 10 * 10);
356 if (idx != std::string::npos) {
365 glTranslated(0, 0, .1);
366 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);