51 #ifdef CHECK_MEMORY_LEAKS
53 #endif // CHECK_MEMORY_LEAKS
92 FXDialogBox(parent, "View Settings", DECOR_TITLE | DECOR_BORDER, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
93 myParent(parent), mySettings(settings),
94 myDecals(decals), myDecalsLock(decalsLock), myDecalsTable(0) {
95 myBackup = (*mySettings);
97 FXVerticalFrame* contentFrame =
98 new FXVerticalFrame(
this, LAYOUT_SIDE_TOP | LAYOUT_FILL_X | LAYOUT_FILL_Y,
99 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
103 new FXHorizontalFrame(contentFrame, FRAME_THICK, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
104 mySchemeName =
new FXComboBox(frame0, 20,
this,
MID_SIMPLE_VIEW_NAMECHANGE, COMBOBOX_INSERT_LAST | FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_CENTER_Y | COMBOBOX_STATIC);
106 for (std::vector<std::string>::const_iterator i = names.begin(); i != names.end(); ++i) {
107 size_t index = mySchemeName->appendItem((*i).c_str());
108 if ((*i) == mySettings->name) {
109 mySchemeName->setCurrentItem((FXint) index);
112 mySchemeName->setNumVisible(5);
114 new FXButton(frame0,
"\t\tSave the setting to registry",
116 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
117 new FXButton(frame0,
"\t\tRemove the setting from registry",
119 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
120 new FXButton(frame0,
"\t\tExport setting to file",
122 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
123 new FXButton(frame0,
"\t\tLoad setting from file",
125 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
130 new FXTabBook(contentFrame, 0, 0, TABBOOK_LEFTTABS | PACK_UNIFORM_WIDTH | PACK_UNIFORM_HEIGHT | LAYOUT_FILL_X | LAYOUT_FILL_Y | LAYOUT_RIGHT,
131 0, 0, 0, 0, 0, 0, 0, 0);
134 new FXTabItem(tabbook,
"Background", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
135 FXVerticalFrame* frame1 =
136 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
139 new FXMatrix(frame1, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
140 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
141 new FXLabel(m11,
"Color", 0, LAYOUT_CENTER_Y);
144 LAYOUT_FIX_WIDTH | LAYOUT_CENTER_Y | LAYOUT_SIDE_TOP | FRAME_SUNKEN | FRAME_THICK | ICON_AFTER_TEXT,
145 0, 0, 100, 0, 0, 0, 0, 0);
147 new FXHorizontalSeparator(frame1, SEPARATOR_GROOVE | LAYOUT_FILL_X);
149 FXVerticalFrame* frame11 =
150 new FXVerticalFrame(frame1, LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
151 new FXLabel(frame11,
"Decals:");
152 myDecalsFrame =
new FXVerticalFrame(frame11);
154 new FXButton(frame111,
"&Load Decals", NULL,
this,
MID_SIMPLE_VIEW_LOAD_DECALS, BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT | LAYOUT_CENTER_X, 0, 0, 0, 0, 20, 20, 4, 4);
155 new FXButton(frame111,
"&Save Decals", NULL,
this,
MID_SIMPLE_VIEW_SAVE_DECALS, BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT | LAYOUT_CENTER_X, 0, 0, 0, 0, 20, 20, 4, 4);
157 new FXHorizontalSeparator(frame1, SEPARATOR_GROOVE | LAYOUT_FILL_X);
160 new FXMatrix(frame1, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
161 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
164 myShowGrid->setCheck(mySettings->showGrid);
167 new FXMatrix(m12, 2, LAYOUT_CENTER_Y | LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
168 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
169 new FXLabel(m121,
"x-spacing", 0, LAYOUT_CENTER_Y);
172 LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
173 myGridXSizeDialer->setRange(1, 10000);
174 myGridXSizeDialer->setValue(mySettings->gridXSize);
176 new FXMatrix(m12, 2, LAYOUT_CENTER_Y | LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
177 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
178 new FXLabel(m122,
"y-spacing", 0, LAYOUT_CENTER_Y);
181 LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
182 myGridYSizeDialer->setRange(1, 10000);
183 myGridYSizeDialer->setValue(mySettings->gridXSize);
187 new FXTabItem(tabbook,
"Streets", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
189 FXVerticalFrame* frame2 =
190 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
192 new FXMatrix(frame2, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
193 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
194 new FXLabel(m21,
"Color", 0, LAYOUT_CENTER_Y);
195 myLaneEdgeColorMode =
new FXComboBox(m21, 30,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
196 myLaneEdgeColorMode->setNumVisible(10);
197 myLaneColorInterpolation =
new FXCheckButton(m21,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
198 FXScrollWindow* genScroll =
new FXScrollWindow(frame2, LAYOUT_FILL_X | LAYOUT_SIDE_TOP | FRAME_RAISED | FRAME_THICK | LAYOUT_FIX_HEIGHT, 0, 0, 0, 80);
199 myLaneColorSettingFrame =
200 new FXVerticalFrame(genScroll, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
203 if (GUIVisualizationSettings::UseMesoSim) {
204 mySettings->edgeColorer.fill(*myLaneEdgeColorMode);
207 mySettings->laneColorer.fill(*myLaneEdgeColorMode);
212 new FXHorizontalSeparator(frame2, SEPARATOR_GROOVE | LAYOUT_FILL_X);
214 new FXMatrix(frame2, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
215 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
217 myShowLaneBorders->setCheck(mySettings->laneShowBorders);
218 new FXLabel(m22,
" ", 0, LAYOUT_CENTER_Y);
220 myShowLaneDecals->setCheck(mySettings->showLinkDecals);
221 new FXLabel(m22,
" ", 0, LAYOUT_CENTER_Y);
223 myShowRails->setCheck(mySettings->showRails);
224 new FXLabel(m22,
" ", 0, LAYOUT_CENTER_Y);
226 myHideMacroConnectors->setCheck(mySettings->hideConnectors);
227 new FXLabel(m22,
" ", 0, LAYOUT_CENTER_Y);
228 new FXLabel(m22,
"Exaggerate width by", 0, LAYOUT_CENTER_Y);
229 myLaneWidthUpscaleDialer =
231 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
232 myLaneWidthUpscaleDialer->setRange(0, 10000);
233 myLaneWidthUpscaleDialer->setValue(mySettings->laneWidthExaggeration);
236 myEdgeNamePanel =
new NamePanel(m22,
this,
"Show edge name", mySettings->edgeName);
237 myStreetNamePanel =
new NamePanel(m22,
this,
"Show street name", mySettings->streetName);
238 myInternalEdgeNamePanel =
new NamePanel(m22,
this,
"Show internal edge name", mySettings->internalEdgeName);
242 new FXTabItem(tabbook,
"Vehicles", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
243 FXVerticalFrame* frame3 =
244 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
247 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
248 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
249 new FXLabel(m31,
"Show As", 0, LAYOUT_CENTER_Y);
250 myVehicleShapeDetail =
new FXComboBox(m31, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
251 myVehicleShapeDetail->appendItem(
"'triangles'");
252 myVehicleShapeDetail->appendItem(
"'boxes'");
253 myVehicleShapeDetail->appendItem(
"'simple shapes'");
254 myVehicleShapeDetail->appendItem(
"'raster images'");
255 myVehicleShapeDetail->setNumVisible(4);
256 myVehicleShapeDetail->setCurrentItem(settings->vehicleQuality);
258 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
261 new FXMatrix(frame3, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
262 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
263 new FXLabel(m32,
"Color", 0, LAYOUT_CENTER_Y);
264 myVehicleColorMode =
new FXComboBox(m32, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
265 mySettings->vehicleColorer.fill(*myVehicleColorMode);
266 myVehicleColorMode->setNumVisible(10);
267 myVehicleColorInterpolation =
new FXCheckButton(m32,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
269 FXScrollWindow* genScroll =
new FXScrollWindow(frame3, LAYOUT_FILL_X | LAYOUT_SIDE_TOP | FRAME_RAISED | FRAME_THICK | LAYOUT_FIX_HEIGHT, 0, 0, 0, 80);
270 myVehicleColorSettingFrame =
271 new FXVerticalFrame(genScroll, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
273 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
276 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
277 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
279 myShowBlinker->setCheck(mySettings->showBlinker);
280 new FXLabel(m33,
" ", 0, LAYOUT_CENTER_Y);
282 myShowMinGap->setCheck(mySettings->drawMinGap);
283 new FXLabel(m33,
" ", 0, LAYOUT_CENTER_Y);
289 myVehicleNamePanel =
new NamePanel(m33,
this,
"Show vehicle name", mySettings->vehicleName);
297 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
300 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
301 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
303 new FXMatrix(m34, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
304 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
305 new FXLabel(m341,
"Minimum size", 0, LAYOUT_CENTER_Y);
306 myVehicleMinSizeDialer =
308 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
309 myVehicleMinSizeDialer->setValue(mySettings->minVehicleSize);
311 new FXMatrix(m34, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
312 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
313 new FXLabel(m342,
"Exaggerate by", 0, LAYOUT_CENTER_Y);
314 myVehicleUpscaleDialer =
316 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
317 myVehicleUpscaleDialer->setRange(0, 10000);
318 myVehicleUpscaleDialer->setValue(mySettings->vehicleExaggeration);
323 new FXTabItem(tabbook,
"Persons", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
324 FXVerticalFrame* frame3 =
325 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
328 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
329 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
330 new FXLabel(m101,
"Show As", 0, LAYOUT_CENTER_Y);
331 myPersonShapeDetail =
new FXComboBox(m101, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
332 myPersonShapeDetail->appendItem(
"'triangles'");
333 myPersonShapeDetail->appendItem(
"'boxes'");
334 myPersonShapeDetail->appendItem(
"'simple shapes'");
335 myPersonShapeDetail->appendItem(
"'raster images'");
336 myPersonShapeDetail->setNumVisible(4);
337 myPersonShapeDetail->setCurrentItem(settings->personQuality);
339 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
342 new FXMatrix(frame3, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
343 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
344 new FXLabel(m102,
"Color", 0, LAYOUT_CENTER_Y);
345 myPersonColorMode =
new FXComboBox(m102, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
346 mySettings->personColorer.fill(*myPersonColorMode);
347 myPersonColorMode->setNumVisible(10);
348 myPersonColorInterpolation =
new FXCheckButton(m102,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
350 FXScrollWindow* genScroll =
new FXScrollWindow(frame3, LAYOUT_FILL_X | LAYOUT_SIDE_TOP | FRAME_RAISED | FRAME_THICK | LAYOUT_FIX_HEIGHT, 0, 0, 0, 80);
351 myPersonColorSettingFrame =
352 new FXVerticalFrame(genScroll, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
354 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
357 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
358 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
359 myPersonNamePanel =
new NamePanel(m103,
this,
"Show person name", mySettings->personName);
361 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
364 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
365 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
367 new FXMatrix(m104, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
368 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
369 new FXLabel(m1041,
"Minimum size", 0, LAYOUT_CENTER_Y);
370 myPersonMinSizeDialer =
372 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
373 myPersonMinSizeDialer->setValue(mySettings->minPersonSize);
375 new FXMatrix(m104, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
376 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
377 new FXLabel(m1042,
"Exaggerate by", 0, LAYOUT_CENTER_Y);
378 myPersonUpscaleDialer =
380 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
381 myPersonUpscaleDialer->setRange(0, 10000);
382 myPersonUpscaleDialer->setValue(mySettings->personExaggeration);
386 new FXTabItem(tabbook,
"Junctions", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
387 FXVerticalFrame* frame4 =
388 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
390 new FXMatrix(frame4, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
391 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
392 new FXLabel(m41,
"Color", 0, LAYOUT_CENTER_Y);
393 myJunctionColorMode =
new FXComboBox(m41, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
394 mySettings->junctionColorer.fill(*myJunctionColorMode);
395 myJunctionColorMode->setNumVisible(2);
396 myJunctionColorInterpolation =
new FXCheckButton(m41,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
398 FXScrollWindow* genScroll =
new FXScrollWindow(frame4, LAYOUT_FILL_X | LAYOUT_SIDE_TOP | FRAME_RAISED | FRAME_THICK | LAYOUT_FIX_HEIGHT, 0, 0, 0, 80);
399 myJunctionColorSettingFrame =
400 new FXVerticalFrame(genScroll, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
402 new FXHorizontalSeparator(frame4, SEPARATOR_GROOVE | LAYOUT_FILL_X);
404 new FXMatrix(frame4, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
405 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
407 myShowTLIndex->setCheck(mySettings->drawLinkTLIndex);
408 new FXLabel(m42,
" ", 0, LAYOUT_CENTER_Y);
410 myShowJunctionIndex->setCheck(mySettings->drawLinkJunctionIndex);
411 new FXLabel(m42,
" ", 0, LAYOUT_CENTER_Y);
413 myShowLane2Lane->setCheck(mySettings->showLane2Lane);
414 new FXLabel(m42,
" ", 0, LAYOUT_CENTER_Y);
415 myJunctionNamePanel =
new NamePanel(m42,
this,
"Show junction name", mySettings->junctionName);
416 myInternalJunctionNamePanel =
new NamePanel(m42,
this,
"Show internal junction name", mySettings->internalJunctionName);
418 myDrawJunctionShape->setCheck(mySettings->drawJunctionShape);
420 new FXTabItem(tabbook,
"Detectors/Trigger", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
421 FXVerticalFrame* frame5 =
422 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
425 new FXMatrix(frame5, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
426 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
427 myAddNamePanel =
new NamePanel(m51,
this,
"Show detector name", mySettings->addName);
428 new FXHorizontalSeparator(frame5 , SEPARATOR_GROOVE | LAYOUT_FILL_X);
431 new FXMatrix(frame5, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
432 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
434 new FXMatrix(m52, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
435 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
436 new FXLabel(m521,
"Minimum size", 0, LAYOUT_CENTER_Y);
437 myDetectorMinSizeDialer =
439 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
441 new FXMatrix(m52, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
442 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
443 myDetectorMinSizeDialer->setValue(mySettings->minAddSize);
444 new FXLabel(m522,
"Exaggerate by", 0, LAYOUT_CENTER_Y);
445 myDetectorUpscaleDialer =
447 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
448 myDetectorUpscaleDialer->setRange(0, 10000);
449 myDetectorUpscaleDialer->setValue(mySettings->addExaggeration);
460 new FXTabItem(tabbook,
"POIs", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
461 FXVerticalFrame* frame6 =
462 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
465 new FXMatrix(frame6, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
466 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
467 myPOINamePanel =
new NamePanel(m61,
this,
"Show poi names", mySettings->poiName);
468 new FXHorizontalSeparator(frame6 , SEPARATOR_GROOVE | LAYOUT_FILL_X);
471 new FXMatrix(frame6, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
472 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
474 new FXMatrix(m62, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
475 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
476 new FXLabel(m621,
"Minimum size to show", 0, LAYOUT_CENTER_Y);
479 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
481 new FXMatrix(m62, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
482 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
483 myPOIMinSizeDialer->setValue(mySettings->minPOISize);
484 new FXLabel(m622,
"Exaggerate by", 0, LAYOUT_CENTER_Y);
487 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
488 myPOIUpscaleDialer->setRange(0, 10000);
489 myPOIUpscaleDialer->setValue(mySettings->addExaggeration);
493 new FXTabItem(tabbook,
"Polygons", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
494 FXVerticalFrame* frame9 =
495 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
498 new FXMatrix(frame9, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
499 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
500 myPolyNamePanel =
new NamePanel(m91,
this,
"Show polygon names", mySettings->polyName);
501 new FXHorizontalSeparator(frame9 , SEPARATOR_GROOVE | LAYOUT_FILL_X);
504 new FXMatrix(frame9, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
505 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
507 new FXMatrix(m92, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
508 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
509 new FXLabel(m921,
"Minimum size to show", 0, LAYOUT_CENTER_Y);
510 myPolyMinSizeDialer =
512 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
514 new FXMatrix(m92, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
515 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
516 myPolyMinSizeDialer->setValue(mySettings->minPolySize);
517 new FXLabel(m922,
"Exaggerate by", 0, LAYOUT_CENTER_Y);
518 myPolyUpscaleDialer =
520 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
521 myPolyUpscaleDialer->setRange(0, 10000);
522 myPolyUpscaleDialer->setValue(mySettings->addExaggeration);
526 new FXTabItem(tabbook,
"Legend", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
527 FXVerticalFrame* frame7 =
528 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
531 new FXMatrix(frame7, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
532 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
534 myShowSizeLegend->setCheck(mySettings->showSizeLegend);
537 new FXTabItem(tabbook,
"openGL", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
538 FXVerticalFrame* frame8 =
539 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
542 new FXMatrix(frame8, 1, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
543 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
545 myAntialiase->setCheck(mySettings->antialiase);
547 myDither->setCheck(mySettings->dither);
550 FXButton* initial =
new FXButton(f2,
"&Use", NULL,
this,
MID_SETTINGS_OK, BUTTON_INITIAL | BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT | LAYOUT_CENTER_X, 0, 0, 0, 0, 30, 30, 4, 4);
551 new FXButton(f2,
"&Discard", NULL,
this,
MID_SETTINGS_CANCEL, BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT | LAYOUT_CENTER_X, 0, 0, 0, 0, 30, 30, 4, 4);
554 rebuildColorMatrices(
false);
599 FXString dataS = (
char*) data;
602 for (
int i = 0; i <
mySchemeName->getNumItems() - 1; ++i) {
675 std::vector<FXColorWell*>::const_iterator colEnd,
676 std::vector<FXRealSpinDial*>::const_iterator threshIt,
677 std::vector<FXRealSpinDial*>::const_iterator threshEnd,
678 std::vector<FXButton*>::const_iterator buttonIt,
681 while (colIt != colEnd) {
683 if (sender == *colIt) {
687 if (sender == *threshIt) {
688 const SUMOReal val = (*threshIt)->getValue();
692 (*threshIt)->getRange(lo, hi);
693 (*threshIt)->setRange(lo, val);
697 if (threshIt != threshEnd) {
698 (*threshIt)->getRange(lo, hi);
699 (*threshIt)->setRange(val, hi);
704 if (sender == *colIt) {
708 if (sender == *buttonIt) {
733 bool doRebuildColorMatrices =
false;
742 if (GUIVisualizationSettings::UseMesoSim) {
805 doRebuildColorMatrices =
true;
809 doRebuildColorMatrices =
true;
812 doRebuildColorMatrices =
true;
819 doRebuildColorMatrices =
true;
823 doRebuildColorMatrices =
true;
826 doRebuildColorMatrices =
true;
833 doRebuildColorMatrices =
true;
837 doRebuildColorMatrices =
true;
840 doRebuildColorMatrices =
true;
847 doRebuildColorMatrices =
true;
851 doRebuildColorMatrices =
true;
854 doRebuildColorMatrices =
true;
884 if (doRebuildColorMatrices) {
888 getApp()->forceRefresh();
897 if (settingsName !=
"") {
898 FXint index =
mySchemeName->appendItem(settingsName.c_str());
910 std::vector<GUISUMOAbstractView::Decal>::iterator j;
913 dev <<
" <decal filename=\"" << d.
filename
914 <<
"\" centerX=\"" << d.
centerX
915 <<
"\" centerY=\"" << d.
centerY
916 <<
"\" centerZ=\"" << d.
centerZ
917 <<
"\" width=\"" << d.
width
918 <<
"\" height=\"" << d.
height
920 <<
"\" rotation=\"" << d.
rot
921 <<
"\" tilt=\"" << d.
tilt
922 <<
"\" roll=\"" << d.
roll
923 <<
"\" layer=\"" << d.
layer
926 dev <<
"</decals>\n";
929 FXMessageBox::error(
myParent, MBOX_OK,
"Storing failed!",
"%s", e.what());
954 std::string name =
"";
955 while (name.length() == 0) {
956 FXDialogBox dialog(
this,
"Enter a name", DECOR_TITLE | DECOR_BORDER);
957 FXVerticalFrame* content =
new FXVerticalFrame(&dialog, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10);
958 new FXLabel(content,
"Please enter an alphanumeric name: ", NULL, LAYOUT_FILL_X | JUSTIFY_LEFT);
959 FXTextField* text =
new FXTextField(content, 40, &dialog, FXDialogBox::ID_ACCEPT, TEXTFIELD_ENTER_ONLY | FRAME_SUNKEN | FRAME_THICK | LAYOUT_FILL_X);
960 new FXHorizontalSeparator(content, SEPARATOR_GROOVE | LAYOUT_FILL_X);
962 new FXButton(buttons,
"&OK", NULL, &dialog, FXDialogBox::ID_ACCEPT, BUTTON_INITIAL | BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_RIGHT);
963 new FXButton(buttons,
"&Cancel", NULL, &dialog, FXDialogBox::ID_CANCEL, BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_RIGHT, 0, 0, 0, 0, 20, 20);
966 if (!dialog.execute()) {
969 name = text->getText().text();
970 for (
size_t i = 0; i < name.length(); ++i) {
971 if (name[i] !=
'_' && (name[i] <
'a' || name[i] >
'z') && (name[i] <
'A' || name[i] >
'Z') && (name[i] <
'0' || name[i] >
'9')) {
979 tmpSettings.
name = name;
995 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1007 std::string name =
mySchemeName->getItem(index).text();
1018 sender->handle(
this,
1020 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1028 FXFileDialog opendialog(
this,
"Export view settings");
1030 opendialog.setSelectMode(SELECTFILE_ANY);
1031 opendialog.setPatternList(
"*.xml");
1043 FXMessageBox::error(
this, MBOX_OK,
"Storing failed!",
"%s", e.what());
1051 sender->handle(
this,
1053 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1061 FXFileDialog opendialog(
this,
"Import view settings");
1063 opendialog.setSelectMode(SELECTFILE_ANY);
1064 opendialog.setPatternList(
"*.xml");
1068 if (opendialog.execute()) {
1078 FXFileDialog opendialog(
this,
"Load Decals");
1080 opendialog.setSelectMode(SELECTFILE_ANY);
1081 opendialog.setPatternList(
"*.xml");
1085 if (opendialog.execute()) {
1095 FXFileDialog opendialog(
this,
"Save Decals");
1097 opendialog.setSelectMode(SELECTFILE_ANY);
1098 opendialog.setPatternList(
"*.xml");
1114 sender->handle(
this, FXSEL(SEL_COMMAND, ID_ENABLE), ptr);
1132 header->setHeight(getApp()->getNormalFont()->getFontHeight() + getApp()->getNormalFont()->getFontAscent());
1134 for (k = 0; k < 7; k++) {
1135 header->setItemJustify(k, JUSTIFY_CENTER_X | JUSTIFY_TOP);
1136 header->setItemSize(k, 60);
1138 header->setItemSize(0, 150);
1141 std::vector<GUISUMOAbstractView::Decal>::iterator j;
1154 for (k = 0; k < 7; k++) {
1162 std::vector<FXColorWell*>& colors,
1163 std::vector<FXRealSpinDial*>& thresholds,
1164 std::vector<FXButton*>& buttons,
1165 FXCheckButton* interpolation,
1168 FXMatrix* m =
new FXMatrix(frame, 3,
1169 LAYOUT_FILL_X | MATRIX_BY_COLUMNS,
1170 0, 0, 0, 0, 10, 10, 0, 0, 5, 3);
1174 const bool fixed = scheme.
isFixed();
1175 std::vector<RGBColor>::const_iterator colIt = scheme.
getColors().begin();
1176 std::vector<SUMOReal>::const_iterator threshIt = scheme.
getThresholds().begin();
1177 std::vector<std::string>::const_iterator nameIt = scheme.
getNames().begin();
1178 FX::FXString buttonText =
"Add";
1179 while (colIt != scheme.
getColors().end()) {
1182 LAYOUT_FIX_WIDTH | LAYOUT_CENTER_Y | FRAME_SUNKEN | FRAME_THICK | ICON_AFTER_TEXT,
1183 0, 0, 100, 0, 0, 0, 0, 0));
1185 new FXLabel(m, nameIt->c_str());
1190 threshDialer->setValue(*threshIt);
1191 thresholds.push_back(threshDialer);
1192 buttons.push_back(
new FXButton(m, buttonText, NULL,
this,
MID_SIMPLE_VIEW_COLORCHANGE, BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT | LAYOUT_CENTER_X, 0, 0, 0, 0, 20, 20, 4, 4));
1193 buttonText =
"Remove";
1201 interpolation->disable();
1203 if (colors.size() > 1) {
1204 interpolation->enable();
1205 if (interpolation->getCheck() != FALSE) {
1206 thresholds.front()->enable();
1208 thresholds.front()->disable();
1211 interpolation->disable();
1212 thresholds.front()->disable();
1224 LAYOUT_FILL_Y | LAYOUT_FIX_WIDTH, 0, 0, 470, 0);
1230 for (
int i = 1; i <= 5; ++i) {
1266 std::string value = i->
item->getText().text();
1268 if (value.find_first_not_of(
" ") == std::string::npos) {
1274 if (row == static_cast<int>(
myDecals->size())) {
1286 }
else if (row > static_cast<int>(
myDecals->size())) {
1290 d = (*myDecals)[row];
1304 std::string msg =
"The value must be a float, is:" + value;
1305 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1312 std::string msg =
"The value must be a float, is:" + value;
1313 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1320 std::string msg =
"The value must be a float, is:" + value;
1321 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1328 std::string msg =
"The value must be a float, is:" + value;
1329 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1336 std::string msg =
"The value must be a float, is:" + value;
1337 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1344 std::string msg =
"The value must be a float, is:" + value;
1345 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1351 (*myDecals)[row] = d;
1371 for (
int i = 0; i <
mySchemeName->getNumItems(); ++i) {
1383 const std::string& title,
1388 FXMatrix* m1 =
new FXMatrix(parent, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
1389 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
1390 new FXLabel(m1,
"Size", 0, LAYOUT_CENTER_Y);
1391 mySizeDial =
new FXRealSpinDial(m1, 10, target, MID_SIMPLE_VIEW_COLORCHANGE,
1392 LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
1395 FXMatrix* m2 =
new FXMatrix(parent, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
1396 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
1397 new FXLabel(m2,
"Color", 0, LAYOUT_CENTER_Y);
1399 target, MID_SIMPLE_VIEW_COLORCHANGE,
1400 LAYOUT_FIX_WIDTH | LAYOUT_CENTER_Y | LAYOUT_SIDE_TOP | FRAME_SUNKEN | FRAME_THICK | ICON_AFTER_TEXT,
1401 0, 0, 100, 0, 0, 0, 0, 0);
1413 myCheck->setCheck(settings.
show);
1414 mySizeDial->setValue(settings.
size);
void rebuildColorMatrices(bool doCreate=false)
Rebuilds color changing dialogs after choosing another coloring scheme.
bool allowsNegativeValues() const
float vehicleExaggeration
The vehicle exaggeration (upscale)
GUIVisualizationTextSettings junctionName
A decal (an image) that can be shown.
FXVerticalFrame * myVehicleColorSettingFrame
long onUpdSaveSetting(FXObject *, FXSelector, void *data)
Called when updating the button that allows to save the settings into the registry.
FXCheckButton * myLaneColorInterpolation
FXComboBox * myJunctionColorMode
void close()
Closes the device and removes it from the dictionary.
FXVerticalFrame * myDecalsFrame
GUICompleteSchemeStorage gSchemeStorage
bool showSizeLegend
Information whether the size legend shall be drawn.
FXCheckButton * myJunctionColorInterpolation
FXRealSpinDial * myPersonMinSizeDialer
FXCheckButton * myShowBlinker
Cancel-button was pushed.
GUIVisualizationTextSettings streetName
float laneWidthExaggeration
The lane exaggeration (upscale thickness)
size_t getLaneEdgeMode() const
Returns the number of the active lane (edge) coloring schme.
SUMOReal roll
The roll of the image to the ground plane (in degrees)
bool isInterpolated() const
std::string addSettings(GUISUMOAbstractView *view=0) const
Adds the parsed settings to the global list of settings.
Informs the dialog about switching to another scheme.
For the export-to-file - button.
bool showBlinker
Information whether vehicle blinkers shall be drawn.
GUIVisualizationTextSettings addName
FXComboBox * myVehicleColorMode
FXRealSpinDial * myPOIMinSizeDialer
FXRealSpinDial * myVehicleMinSizeDialer
GUIVisualizationTextSettings personName
std::vector< FXButton * > myLaneButtons
FXRealSpinDial * myDetectorUpscaleDialer
float minAddSize
The minimum size of additional structures to let them be drawn.
bool drawLinkTLIndex
Information whether a link's tls index shall be drawn.
static SUMOReal _2SUMOReal(const E *const data)
FXDEFMAP(GUIDialog_ViewSettings) GUIDialog_ViewSettingsMap[]
GUIVisualizationTextSettings poiName
GUIColorScheme & getLaneEdgeScheme()
Returns the current lane (edge) coloring schme.
float polyExaggeration
The additional shapes (upscale)
GUIColorer laneColorer
The lane colorer.
Stores the information about how to visualize structures.
The dialog to change the view (gui) settings.
static RGBColor getRGBColor(FXColor col)
converts FXColor to RGBColor
void remove(GUIDialog_EditViewport *)
float poiExaggeration
The additional shapes (upscale)
std::vector< GUISUMOAbstractView::Decal > * myDecals
The parent's decals.
static FXbool userPermitsOverwritingWhenFileExists(FXWindow *const parent, const FXString &file)
Returns true if either the file given by its name does not exist or the user allows overwriting it...
NamePanel * myPOINamePanel
bool showRails
Information whether rails shall be drawn.
void setInterpolated(const bool interpolate, SUMOReal interpolationStart=0.f)
void loadDecals(const std::string &file)
Loads decals from a file.
std::vector< FXButton * > myPersonButtons
std::vector< FXColorWell * > myJunctionColors
GUIVisualizationTextSettings vehicleName
FXComboBox * myVehicleShapeDetail
void removeColor(const size_t pos)
void loadSettings(const std::string &file)
Loads a scheme from a file.
bool hasDecals() const
Returns whether any decals have been parsed.
static void deleteChildren(FXWindow *w)
Deletes all children of the given window.
long onCmdSaveDecals(FXObject *, FXSelector, void *data)
Called if the decals shall be saved to a file.
FXString gCurrentFolder
The folder used as last.
long onCmdSaveSetting(FXObject *, FXSelector, void *data)
Called if the settings shall be saved into the registry.
bool laneShowBorders
Information whether lane borders shall be drawn.
SUMOReal getGridHeight() const
SUMOReal centerZ
The center of the image in z-direction (net coordinates, in m)
long onCmdExportSetting(FXObject *, FXSelector, void *data)
Called if the settings shall be exported into a file.
void setThreshold(const size_t pos, const SUMOReal threshold)
SUMOReal width
The width of the image (net coordinates in x-direction, in m)
long onCmdEditTable(FXObject *, FXSelector, void *data)
Called if the decals-table was changed.
const std::vector< SUMOReal > & getThresholds() const
bool dither
Information whether dithering shall be enabled.
FXRealSpinDial * myPolyUpscaleDialer
std::vector< FXRealSpinDial * > myPersonThresholds
const std::vector< GUISUMOAbstractView::Decal > & getDecals() const
Returns the parsed decals.
FXColorWell * myColorWell
long onCmdNameChange(FXObject *, FXSelector, void *)
Called if the name of the scheme was changed.
void saveDecals(const std::string &file) const
Writes the currently used decals into a file.
float personExaggeration
The person exaggeration (upscale)
GUIColorer vehicleColorer
The vehicle colorer.
GUIVisualizationTextSettings edgeName
FXCheckButton * myVehicleColorInterpolation
const std::vector< std::string > & getNames() const
Returns a list of stored settings names.
For the load-decals - button.
void setActive(size_t scheme)
NamePanel * myInternalEdgeNamePanel
FXCheckButton * myShowMinGap
NamePanel * myEdgeNamePanel
FXCheckButton * myShowGrid
std::string name
The name of this setting.
float addExaggeration
The additional structures exaggeration (upscale)
void setCurrentScheme(const std::string &)
Sets the named scheme as the current.
FXCheckButton * myShowLane2Lane
void rebuildList()
Rebuilds the decals table.
SUMOReal altitude
The altitude of the image (net coordinates in z-direction, in m)
GUIVisualizationSettings * mySettings
The current settings.
GUIVisualizationTextSettings internalEdgeName
FXMatrix * rebuildColorMatrix(FXVerticalFrame *frame, std::vector< FXColorWell * > &colors, std::vector< FXRealSpinDial * > &thresholds, std::vector< FXButton * > &buttons, FXCheckButton *interpolation, GUIColorScheme &scheme)
Rebuilds color changing dialogs after choosing another coloring scheme.
NamePanel * myStreetNamePanel
SUMOReal centerY
The center of the image in y-direction (net coordinates, in m)
bool drawMinGap
Information whether the minimum gap shall be drawn.
NamePanel * myInternalJunctionNamePanel
std::vector< FXColorWell * > myVehicleColors
bool contains(const std::string &name) const
Returns the information whether a setting with the given name is stored.
FXRealSpinDial * myLaneWidthUpscaleDialer
void remove(const std::string &name)
Removes the setting with the given name.
unsigned int getNumInitialSettings() const
Returns the number of initial settings.
FXCheckButton * myShowSizeLegend
GUIVisualizationSettings & get(const std::string &name)
Returns the named scheme.
FXVerticalFrame * myLaneColorSettingFrame
FXComboBox & getColoringSchemesCombo()
FXRealSpinDial * myPersonUpscaleDialer
bool initialised
Whether this image was initialised (inserted as a texture)
GUIColorer personColorer
The person colorer.
GUIVisualizationTextSettings internalJunctionName
GUIColorer junctionColorer
The junction colorer.
std::string getCurrentScheme() const
Returns the name of the currently chosen scheme.
std::string filename
The path to the file the image is located at.
For the save-to-db - button.
SUMOReal gridXSize
Information about the grid spacings.
long onUpdDeleteSetting(FXObject *, FXSelector, void *data)
Called when updating the button that allows to delete settings.
FXVerticalFrame * myJunctionColorSettingFrame
std::string toString(const T &t, std::streamsize accuracy=OUTPUT_ACCURACY)
FXCheckButton * myShowLaneBorders
NamePanel * myAddNamePanel
std::vector< FXColorWell * > myPersonColors
FXRealSpinDial * myGridYSizeDialer
long onCmdCancel(FXObject *, FXSelector, void *)
Called if the Cancel-button was pressed.
RGBColor backgroundColor
The background color to use.
bool antialiase
Information whether antialiase shall be enabled.
float minPOISize
The minimum size of shapes to let them be drawn.
const std::vector< RGBColor > & getColors() const
long onCmdOk(FXObject *, FXSelector, void *)
Called if the OK-button was pressed.
For the save-decals - button.
void unlock()
release mutex lock
SUMOReal height
The height of the image (net coordinates in y-direction, in m)
~GUIDialog_ViewSettings()
Destructor.
SUMOReal centerX
The center of the image in x-direction (net coordinates, in m)
NamePanel * myVehicleNamePanel
FXCheckButton * myShowJunctionIndex
MFXAddEditTypedTable * myDecalsTable
FXCheckButton * myDrawJunctionShape
float minPersonSize
The minimum size of persons to let them be drawn.
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
GUIColorScheme & getScheme()
FXRealSpinDial * mySizeDial
NamePanel(FXMatrix *parent, GUIDialog_ViewSettings *target, const std::string &title, const GUIVisualizationTextSettings &settings)
FXRealSpinDial * myPOIUpscaleDialer
unsigned int addColor(const RGBColor &color, const SUMOReal threshold, const std::string &name="")
static OutputDevice & getDevice(const std::string &name)
Returns the described OutputDevice.
GUIVisualizationTextSettings getSettings()
FXComboBox * myPersonShapeDetail
NamePanel * myJunctionNamePanel
void writeSettings(FXApp *app)
Writes the current scheme into the registry.
FXComboBox * myLaneEdgeColorMode
void setCurrent(GUIVisualizationSettings *settings)
Sets current settings (called if reopened)
FXCheckButton * myHideMacroConnectors
bool drawLinkJunctionIndex
Information whether a link's junction index shall be drawn.
SUMOReal getGridWidth() const
FXCheckButton * myShowRails
virtual bool setColorScheme(const std::string &)
int personQuality
The quality of person drawing.
FXCheckButton * myShowTLIndex
bool showGrid
Information whether a grid shall be shown.
const std::vector< std::string > & getNames() const
long onUpdExportSetting(FXObject *, FXSelector, void *data)
Called when updating the button that allows to export settings into a file.
static FXColor getFXColor(const RGBColor &col)
converts FXColor to RGBColor
SUMOReal layer
The layer of the image.
long onCmdColorChange(FXObject *, FXSelector, void *)
Called if something (color, width, etc.) has been changed.
void setColor(const size_t pos, const RGBColor &color)
float minVehicleSize
The minimum size of vehicles to let them be drawn.
bool showLane2Lane
Information whether lane-to-lane arrows shall be drawn.
Static storage of an output device and its base (abstract) implementation.
void setCellType(size_t pos, CellType t)
FXRealSpinDial * myGridXSizeDialer
An XML-handler for visualisation schemes.
void save(OutputDevice &dev) const
Writes the settings into an output device.
FXCheckButton * myPersonColorInterpolation
bool drawJunctionShape
whether the shape of the junction should be drawn
long onCmdLoadDecals(FXObject *, FXSelector, void *data)
Called if the decals shall be loaded from a file.
void update(const GUIVisualizationTextSettings &settings)
FXColorWell * myBackgroundColor
std::vector< FXRealSpinDial * > myVehicleThresholds
SUMOReal tilt
The tilt of the image to the ground plane (in degrees)
int vehicleQuality
The quality of vehicle drawing.
bool updateColorRanges(FXObject *sender, std::vector< FXColorWell * >::const_iterator colIt, std::vector< FXColorWell * >::const_iterator colEnd, std::vector< FXRealSpinDial * >::const_iterator threshIt, std::vector< FXRealSpinDial * >::const_iterator threshEnd, std::vector< FXButton * >::const_iterator buttonIt, GUIColorScheme &scheme)
MFXMutex * myDecalsLock
Lock used when changing the decals.
FXRealSpinDial * myVehicleUpscaleDialer
void setNumberCellParams(size_t pos, double min, double max, double steps1, double steps2, double steps3, const std::string &format)
std::vector< FXRealSpinDial * > myJunctionThresholds
FXRealSpinDial * myPolyMinSizeDialer
For the import-from-file - button.
FXCheckButton * myAntialiase
long onCmdDeleteSetting(FXObject *, FXSelector, void *data)
Called if the settings shall be deleted.
GUISUMOAbstractView * myParent
The parent view (which settings are changed)
FXVerticalFrame * myPersonColorSettingFrame
NamePanel * myPolyNamePanel
static FXIcon * getIcon(GUIIcon which)
std::vector< FXButton * > myJunctionButtons
NamePanel * myPersonNamePanel
GUIVisualizationSettings myBackup
A backup of the settings (used if the "Cancel" button is pressed)
FXRealSpinDial * myDetectorMinSizeDialer
std::vector< FXColorWell * > myLaneColors
FXComboBox * mySchemeName
std::vector< FXRealSpinDial * > myLaneThresholds
Informs the dialog about a value's change.
std::vector< FXButton * > myVehicleButtons
float minPolySize
The minimum size of shapes to let them be drawn.
SUMOReal rot
The rotation of the image in the ground plane (in degrees)
long onCmdImportSetting(FXObject *, FXSelector, void *data)
Called if the settings shall be read from a file.
void add(const GUIVisualizationSettings &scheme)
Adds a visualization scheme.
FXComboBox * myPersonColorMode
long onUpdImportSetting(FXObject *, FXSelector, void *data)
Called when updating the button that allows to read settings from a file.
GUIVisualizationTextSettings polyName
FXCheckButton * myShowLaneDecals