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);
239 myCwaEdgeNamePanel =
new NamePanel(m22,
this,
"Show crossing and walkingarea name", mySettings->cwaEdgeName);
243 new FXTabItem(tabbook,
"Vehicles", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
244 FXVerticalFrame* frame3 =
245 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
248 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
249 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
250 new FXLabel(m31,
"Show As", 0, LAYOUT_CENTER_Y);
251 myVehicleShapeDetail =
new FXComboBox(m31, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
252 myVehicleShapeDetail->appendItem(
"'triangles'");
253 myVehicleShapeDetail->appendItem(
"'boxes'");
254 myVehicleShapeDetail->appendItem(
"'simple shapes'");
255 myVehicleShapeDetail->appendItem(
"'raster images'");
256 myVehicleShapeDetail->setNumVisible(4);
257 myVehicleShapeDetail->setCurrentItem(settings->vehicleQuality);
259 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
262 new FXMatrix(frame3, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
263 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
264 new FXLabel(m32,
"Color", 0, LAYOUT_CENTER_Y);
265 myVehicleColorMode =
new FXComboBox(m32, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
266 mySettings->vehicleColorer.fill(*myVehicleColorMode);
267 myVehicleColorMode->setNumVisible(10);
268 myVehicleColorInterpolation =
new FXCheckButton(m32,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
270 FXScrollWindow* genScroll =
new FXScrollWindow(frame3, LAYOUT_FILL_X | LAYOUT_SIDE_TOP | FRAME_RAISED | FRAME_THICK | LAYOUT_FIX_HEIGHT, 0, 0, 0, 80);
271 myVehicleColorSettingFrame =
272 new FXVerticalFrame(genScroll, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
274 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
277 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
278 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
280 myShowBlinker->setCheck(mySettings->showBlinker);
281 new FXLabel(m33,
" ", 0, LAYOUT_CENTER_Y);
283 myShowMinGap->setCheck(mySettings->drawMinGap);
284 new FXLabel(m33,
" ", 0, LAYOUT_CENTER_Y);
290 myVehicleNamePanel =
new NamePanel(m33,
this,
"Show vehicle name", mySettings->vehicleName);
298 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
301 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
302 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
304 new FXMatrix(m34, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
305 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
306 new FXLabel(m341,
"Minimum size", 0, LAYOUT_CENTER_Y);
307 myVehicleMinSizeDialer =
309 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
310 myVehicleMinSizeDialer->setValue(mySettings->minVehicleSize);
312 new FXMatrix(m34, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
313 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
314 new FXLabel(m342,
"Exaggerate by", 0, LAYOUT_CENTER_Y);
315 myVehicleUpscaleDialer =
317 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
318 myVehicleUpscaleDialer->setRange(0, 10000);
319 myVehicleUpscaleDialer->setValue(mySettings->vehicleExaggeration);
324 new FXTabItem(tabbook,
"Persons", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
325 FXVerticalFrame* frame3 =
326 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
329 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
330 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
331 new FXLabel(m101,
"Show As", 0, LAYOUT_CENTER_Y);
332 myPersonShapeDetail =
new FXComboBox(m101, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
333 myPersonShapeDetail->appendItem(
"'triangles'");
334 myPersonShapeDetail->appendItem(
"'boxes'");
335 myPersonShapeDetail->appendItem(
"'simple shapes'");
336 myPersonShapeDetail->appendItem(
"'raster images'");
337 myPersonShapeDetail->setNumVisible(4);
338 myPersonShapeDetail->setCurrentItem(settings->personQuality);
340 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
343 new FXMatrix(frame3, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
344 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
345 new FXLabel(m102,
"Color", 0, LAYOUT_CENTER_Y);
346 myPersonColorMode =
new FXComboBox(m102, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
347 mySettings->personColorer.fill(*myPersonColorMode);
348 myPersonColorMode->setNumVisible(10);
349 myPersonColorInterpolation =
new FXCheckButton(m102,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
351 FXScrollWindow* genScroll =
new FXScrollWindow(frame3, LAYOUT_FILL_X | LAYOUT_SIDE_TOP | FRAME_RAISED | FRAME_THICK | LAYOUT_FIX_HEIGHT, 0, 0, 0, 80);
352 myPersonColorSettingFrame =
353 new FXVerticalFrame(genScroll, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
355 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
358 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
359 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
360 myPersonNamePanel =
new NamePanel(m103,
this,
"Show person name", mySettings->personName);
362 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
365 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
366 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
368 new FXMatrix(m104, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
369 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
370 new FXLabel(m1041,
"Minimum size", 0, LAYOUT_CENTER_Y);
371 myPersonMinSizeDialer =
373 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
374 myPersonMinSizeDialer->setValue(mySettings->minPersonSize);
376 new FXMatrix(m104, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
377 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
378 new FXLabel(m1042,
"Exaggerate by", 0, LAYOUT_CENTER_Y);
379 myPersonUpscaleDialer =
381 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
382 myPersonUpscaleDialer->setRange(0, 10000);
383 myPersonUpscaleDialer->setValue(mySettings->personExaggeration);
387 new FXTabItem(tabbook,
"Junctions", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
388 FXVerticalFrame* frame4 =
389 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
391 new FXMatrix(frame4, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
392 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
393 new FXLabel(m41,
"Color", 0, LAYOUT_CENTER_Y);
394 myJunctionColorMode =
new FXComboBox(m41, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
395 mySettings->junctionColorer.fill(*myJunctionColorMode);
396 myJunctionColorMode->setNumVisible(2);
397 myJunctionColorInterpolation =
new FXCheckButton(m41,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
399 FXScrollWindow* genScroll =
new FXScrollWindow(frame4, LAYOUT_FILL_X | LAYOUT_SIDE_TOP | FRAME_RAISED | FRAME_THICK | LAYOUT_FIX_HEIGHT, 0, 0, 0, 80);
400 myJunctionColorSettingFrame =
401 new FXVerticalFrame(genScroll, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
403 new FXHorizontalSeparator(frame4, SEPARATOR_GROOVE | LAYOUT_FILL_X);
405 new FXMatrix(frame4, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
406 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
408 myShowTLIndex->setCheck(mySettings->drawLinkTLIndex);
409 new FXLabel(m42,
" ", 0, LAYOUT_CENTER_Y);
411 myShowJunctionIndex->setCheck(mySettings->drawLinkJunctionIndex);
412 new FXLabel(m42,
" ", 0, LAYOUT_CENTER_Y);
414 myShowLane2Lane->setCheck(mySettings->showLane2Lane);
415 new FXLabel(m42,
" ", 0, LAYOUT_CENTER_Y);
416 myJunctionNamePanel =
new NamePanel(m42,
this,
"Show junction name", mySettings->junctionName);
417 myInternalJunctionNamePanel =
new NamePanel(m42,
this,
"Show internal junction name", mySettings->internalJunctionName);
419 myDrawJunctionShape->setCheck(mySettings->drawJunctionShape);
421 new FXTabItem(tabbook,
"Detectors/Trigger", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
422 FXVerticalFrame* frame5 =
423 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
426 new FXMatrix(frame5, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
427 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
428 myAddNamePanel =
new NamePanel(m51,
this,
"Show detector name", mySettings->addName);
429 new FXHorizontalSeparator(frame5 , SEPARATOR_GROOVE | LAYOUT_FILL_X);
432 new FXMatrix(frame5, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
433 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
435 new FXMatrix(m52, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
436 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
437 new FXLabel(m521,
"Minimum size", 0, LAYOUT_CENTER_Y);
438 myDetectorMinSizeDialer =
440 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
442 new FXMatrix(m52, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
443 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
444 myDetectorMinSizeDialer->setValue(mySettings->minAddSize);
445 new FXLabel(m522,
"Exaggerate by", 0, LAYOUT_CENTER_Y);
446 myDetectorUpscaleDialer =
448 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
449 myDetectorUpscaleDialer->setRange(0, 10000);
450 myDetectorUpscaleDialer->setValue(mySettings->addExaggeration);
461 new FXTabItem(tabbook,
"POIs", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
462 FXVerticalFrame* frame6 =
463 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
466 new FXMatrix(frame6, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
467 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
468 myPOINamePanel =
new NamePanel(m61,
this,
"Show poi names", mySettings->poiName);
469 new FXHorizontalSeparator(frame6 , SEPARATOR_GROOVE | LAYOUT_FILL_X);
472 new FXMatrix(frame6, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
473 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
475 new FXMatrix(m62, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
476 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
477 new FXLabel(m621,
"Minimum size to show", 0, LAYOUT_CENTER_Y);
480 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
482 new FXMatrix(m62, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
483 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
484 myPOIMinSizeDialer->setValue(mySettings->minPOISize);
485 new FXLabel(m622,
"Exaggerate by", 0, LAYOUT_CENTER_Y);
488 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
489 myPOIUpscaleDialer->setRange(0, 10000);
490 myPOIUpscaleDialer->setValue(mySettings->addExaggeration);
494 new FXTabItem(tabbook,
"Polygons", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
495 FXVerticalFrame* frame9 =
496 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
499 new FXMatrix(frame9, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
500 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
501 myPolyNamePanel =
new NamePanel(m91,
this,
"Show polygon names", mySettings->polyName);
502 new FXHorizontalSeparator(frame9 , SEPARATOR_GROOVE | LAYOUT_FILL_X);
505 new FXMatrix(frame9, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
506 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
508 new FXMatrix(m92, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
509 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
510 new FXLabel(m921,
"Minimum size to show", 0, LAYOUT_CENTER_Y);
511 myPolyMinSizeDialer =
513 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
515 new FXMatrix(m92, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
516 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
517 myPolyMinSizeDialer->setValue(mySettings->minPolySize);
518 new FXLabel(m922,
"Exaggerate by", 0, LAYOUT_CENTER_Y);
519 myPolyUpscaleDialer =
521 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
522 myPolyUpscaleDialer->setRange(0, 10000);
523 myPolyUpscaleDialer->setValue(mySettings->addExaggeration);
527 new FXTabItem(tabbook,
"Legend", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
528 FXVerticalFrame* frame7 =
529 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
532 new FXMatrix(frame7, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
533 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
535 myShowSizeLegend->setCheck(mySettings->showSizeLegend);
538 new FXTabItem(tabbook,
"openGL", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
539 FXVerticalFrame* frame8 =
540 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
543 new FXMatrix(frame8, 1, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
544 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
546 myAntialiase->setCheck(mySettings->antialiase);
548 myDither->setCheck(mySettings->dither);
551 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);
552 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);
555 rebuildColorMatrices(
false);
601 FXString dataS = (
char*) data;
604 for (
int i = 0; i <
mySchemeName->getNumItems() - 1; ++i) {
678 std::vector<FXColorWell*>::const_iterator colEnd,
679 std::vector<FXRealSpinDial*>::const_iterator threshIt,
680 std::vector<FXRealSpinDial*>::const_iterator threshEnd,
681 std::vector<FXButton*>::const_iterator buttonIt,
684 while (colIt != colEnd) {
686 if (sender == *colIt) {
690 if (sender == *threshIt) {
691 const SUMOReal val = (*threshIt)->getValue();
695 (*threshIt)->getRange(lo, hi);
696 (*threshIt)->setRange(lo, val);
700 if (threshIt != threshEnd) {
701 (*threshIt)->getRange(lo, hi);
702 (*threshIt)->setRange(val, hi);
707 if (sender == *colIt) {
711 if (sender == *buttonIt) {
736 bool doRebuildColorMatrices =
false;
745 if (GUIVisualizationSettings::UseMesoSim) {
809 doRebuildColorMatrices =
true;
813 doRebuildColorMatrices =
true;
816 doRebuildColorMatrices =
true;
823 doRebuildColorMatrices =
true;
827 doRebuildColorMatrices =
true;
830 doRebuildColorMatrices =
true;
837 doRebuildColorMatrices =
true;
841 doRebuildColorMatrices =
true;
844 doRebuildColorMatrices =
true;
851 doRebuildColorMatrices =
true;
855 doRebuildColorMatrices =
true;
858 doRebuildColorMatrices =
true;
888 if (doRebuildColorMatrices) {
892 getApp()->forceRefresh();
901 if (settingsName !=
"") {
902 FXint index =
mySchemeName->appendItem(settingsName.c_str());
914 std::vector<GUISUMOAbstractView::Decal>::iterator j;
917 dev <<
" <decal filename=\"" << d.
filename
918 <<
"\" centerX=\"" << d.
centerX
919 <<
"\" centerY=\"" << d.
centerY
920 <<
"\" centerZ=\"" << d.
centerZ
921 <<
"\" width=\"" << d.
width
922 <<
"\" height=\"" << d.
height
924 <<
"\" rotation=\"" << d.
rot
925 <<
"\" tilt=\"" << d.
tilt
926 <<
"\" roll=\"" << d.
roll
927 <<
"\" layer=\"" << d.
layer
930 dev <<
"</decals>\n";
933 FXMessageBox::error(
myParent, MBOX_OK,
"Storing failed!",
"%s", e.what());
958 std::string name =
"";
959 while (name.length() == 0) {
960 FXDialogBox dialog(
this,
"Enter a name", DECOR_TITLE | DECOR_BORDER);
961 FXVerticalFrame* content =
new FXVerticalFrame(&dialog, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10);
962 new FXLabel(content,
"Please enter an alphanumeric name: ", NULL, LAYOUT_FILL_X | JUSTIFY_LEFT);
963 FXTextField* text =
new FXTextField(content, 40, &dialog, FXDialogBox::ID_ACCEPT, TEXTFIELD_ENTER_ONLY | FRAME_SUNKEN | FRAME_THICK | LAYOUT_FILL_X);
964 new FXHorizontalSeparator(content, SEPARATOR_GROOVE | LAYOUT_FILL_X);
966 new FXButton(buttons,
"&OK", NULL, &dialog, FXDialogBox::ID_ACCEPT, BUTTON_INITIAL | BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_RIGHT);
967 new FXButton(buttons,
"&Cancel", NULL, &dialog, FXDialogBox::ID_CANCEL, BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_RIGHT, 0, 0, 0, 0, 20, 20);
970 if (!dialog.execute()) {
973 name = text->getText().text();
974 for (
size_t i = 0; i < name.length(); ++i) {
975 if (name[i] !=
'_' && (name[i] <
'a' || name[i] >
'z') && (name[i] <
'A' || name[i] >
'Z') && (name[i] <
'0' || name[i] >
'9')) {
983 tmpSettings.
name = name;
999 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1011 std::string name =
mySchemeName->getItem(index).text();
1022 sender->handle(
this,
1024 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1032 FXFileDialog opendialog(
this,
"Export view settings");
1034 opendialog.setSelectMode(SELECTFILE_ANY);
1035 opendialog.setPatternList(
"*.xml");
1047 FXMessageBox::error(
this, MBOX_OK,
"Storing failed!",
"%s", e.what());
1055 sender->handle(
this,
1057 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1065 FXFileDialog opendialog(
this,
"Import view settings");
1067 opendialog.setSelectMode(SELECTFILE_ANY);
1068 opendialog.setPatternList(
"*.xml");
1072 if (opendialog.execute()) {
1082 FXFileDialog opendialog(
this,
"Load Decals");
1084 opendialog.setSelectMode(SELECTFILE_ANY);
1085 opendialog.setPatternList(
"*.xml");
1089 if (opendialog.execute()) {
1099 FXFileDialog opendialog(
this,
"Save Decals");
1101 opendialog.setSelectMode(SELECTFILE_ANY);
1102 opendialog.setPatternList(
"*.xml");
1118 sender->handle(
this, FXSEL(SEL_COMMAND, ID_ENABLE), ptr);
1136 header->setHeight(getApp()->getNormalFont()->getFontHeight() + getApp()->getNormalFont()->getFontAscent());
1138 for (k = 0; k < 7; k++) {
1139 header->setItemJustify(k, JUSTIFY_CENTER_X | JUSTIFY_TOP);
1140 header->setItemSize(k, 60);
1142 header->setItemSize(0, 150);
1145 std::vector<GUISUMOAbstractView::Decal>::iterator j;
1158 for (k = 0; k < 7; k++) {
1166 std::vector<FXColorWell*>& colors,
1167 std::vector<FXRealSpinDial*>& thresholds,
1168 std::vector<FXButton*>& buttons,
1169 FXCheckButton* interpolation,
1172 FXMatrix* m =
new FXMatrix(frame, 3,
1173 LAYOUT_FILL_X | MATRIX_BY_COLUMNS,
1174 0, 0, 0, 0, 10, 10, 0, 0, 5, 3);
1178 const bool fixed = scheme.
isFixed();
1179 std::vector<RGBColor>::const_iterator colIt = scheme.
getColors().begin();
1180 std::vector<SUMOReal>::const_iterator threshIt = scheme.
getThresholds().begin();
1181 std::vector<std::string>::const_iterator nameIt = scheme.
getNames().begin();
1182 FX::FXString buttonText =
"Add";
1183 while (colIt != scheme.
getColors().end()) {
1186 LAYOUT_FIX_WIDTH | LAYOUT_CENTER_Y | FRAME_SUNKEN | FRAME_THICK | ICON_AFTER_TEXT,
1187 0, 0, 100, 0, 0, 0, 0, 0));
1189 new FXLabel(m, nameIt->c_str());
1194 threshDialer->setValue(*threshIt);
1195 thresholds.push_back(threshDialer);
1196 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));
1197 buttonText =
"Remove";
1205 interpolation->disable();
1207 if (colors.size() > 1) {
1208 interpolation->enable();
1209 if (interpolation->getCheck() != FALSE) {
1210 thresholds.front()->enable();
1212 thresholds.front()->disable();
1215 interpolation->disable();
1216 thresholds.front()->disable();
1228 LAYOUT_FILL_Y | LAYOUT_FIX_WIDTH, 0, 0, 470, 0);
1234 for (
int i = 1; i <= 5; ++i) {
1270 std::string value = i->
item->getText().text();
1272 if (value.find_first_not_of(
" ") == std::string::npos) {
1278 if (row == static_cast<int>(
myDecals->size())) {
1290 }
else if (row > static_cast<int>(
myDecals->size())) {
1294 d = (*myDecals)[row];
1308 std::string msg =
"The value must be a float, is:" + value;
1309 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1316 std::string msg =
"The value must be a float, is:" + value;
1317 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1324 std::string msg =
"The value must be a float, is:" + value;
1325 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1332 std::string msg =
"The value must be a float, is:" + value;
1333 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1340 std::string msg =
"The value must be a float, is:" + value;
1341 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1348 std::string msg =
"The value must be a float, is:" + value;
1349 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1355 (*myDecals)[row] = d;
1375 for (
int i = 0; i <
mySchemeName->getNumItems(); ++i) {
1387 const std::string& title,
1392 FXMatrix* m1 =
new FXMatrix(parent, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
1393 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
1394 new FXLabel(m1,
"Size", 0, LAYOUT_CENTER_Y);
1395 mySizeDial =
new FXRealSpinDial(m1, 10, target, MID_SIMPLE_VIEW_COLORCHANGE,
1396 LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
1399 FXMatrix* m2 =
new FXMatrix(parent, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
1400 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
1401 new FXLabel(m2,
"Color", 0, LAYOUT_CENTER_Y);
1403 target, MID_SIMPLE_VIEW_COLORCHANGE,
1404 LAYOUT_FIX_WIDTH | LAYOUT_CENTER_Y | LAYOUT_SIDE_TOP | FRAME_SUNKEN | FRAME_THICK | ICON_AFTER_TEXT,
1405 0, 0, 100, 0, 0, 0, 0, 0);
1417 myCheck->setCheck(settings.
show);
1418 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.
GUIVisualizationTextSettings cwaEdgeName
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.
NamePanel * myCwaEdgeNamePanel
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