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,
"Nodes", 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 new FXTabItem(tabbook,
"Detectors/Trigger", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
419 FXVerticalFrame* frame5 =
420 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
423 new FXMatrix(frame5, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
424 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
425 myAddNamePanel =
new NamePanel(m51,
this,
"Show detector name", mySettings->addName);
426 new FXHorizontalSeparator(frame5 , SEPARATOR_GROOVE | LAYOUT_FILL_X);
429 new FXMatrix(frame5, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
430 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
432 new FXMatrix(m52, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
433 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
434 new FXLabel(m521,
"Minimum size", 0, LAYOUT_CENTER_Y);
435 myDetectorMinSizeDialer =
437 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
439 new FXMatrix(m52, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
440 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
441 myDetectorMinSizeDialer->setValue(mySettings->minAddSize);
442 new FXLabel(m522,
"Exaggerate by", 0, LAYOUT_CENTER_Y);
443 myDetectorUpscaleDialer =
445 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
446 myDetectorUpscaleDialer->setRange(0, 10000);
447 myDetectorUpscaleDialer->setValue(mySettings->addExaggeration);
458 new FXTabItem(tabbook,
"POIs", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
459 FXVerticalFrame* frame6 =
460 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
463 new FXMatrix(frame6, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
464 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
465 myPOINamePanel =
new NamePanel(m61,
this,
"Show poi names", mySettings->poiName);
466 new FXHorizontalSeparator(frame6 , SEPARATOR_GROOVE | LAYOUT_FILL_X);
469 new FXMatrix(frame6, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
470 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
472 new FXMatrix(m62, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
473 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
474 new FXLabel(m621,
"Minimum size to show", 0, LAYOUT_CENTER_Y);
477 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
479 new FXMatrix(m62, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
480 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
481 myPOIMinSizeDialer->setValue(mySettings->minPOISize);
482 new FXLabel(m622,
"Exaggerate by", 0, LAYOUT_CENTER_Y);
485 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
486 myPOIUpscaleDialer->setRange(0, 10000);
487 myPOIUpscaleDialer->setValue(mySettings->addExaggeration);
491 new FXTabItem(tabbook,
"Polygons", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
492 FXVerticalFrame* frame9 =
493 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
496 new FXMatrix(frame9, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
497 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
498 myPolyNamePanel =
new NamePanel(m91,
this,
"Show polygon names", mySettings->polyName);
499 new FXHorizontalSeparator(frame9 , SEPARATOR_GROOVE | LAYOUT_FILL_X);
502 new FXMatrix(frame9, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
503 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
505 new FXMatrix(m92, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
506 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
507 new FXLabel(m921,
"Minimum size to show", 0, LAYOUT_CENTER_Y);
508 myPolyMinSizeDialer =
510 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
512 new FXMatrix(m92, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
513 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
514 myPolyMinSizeDialer->setValue(mySettings->minPolySize);
515 new FXLabel(m922,
"Exaggerate by", 0, LAYOUT_CENTER_Y);
516 myPolyUpscaleDialer =
518 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
519 myPolyUpscaleDialer->setRange(0, 10000);
520 myPolyUpscaleDialer->setValue(mySettings->addExaggeration);
524 new FXTabItem(tabbook,
"Legend", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
525 FXVerticalFrame* frame7 =
526 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
529 new FXMatrix(frame7, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
530 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
532 myShowSizeLegend->setCheck(mySettings->showSizeLegend);
535 new FXTabItem(tabbook,
"openGL", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
536 FXVerticalFrame* frame8 =
537 new FXVerticalFrame(tabbook, FRAME_THICK | FRAME_RAISED, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
540 new FXMatrix(frame8, 1, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
541 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
543 myAntialiase->setCheck(mySettings->antialiase);
545 myDither->setCheck(mySettings->dither);
548 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);
549 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);
552 rebuildColorMatrices(
false);
597 FXString dataS = (
char*) data;
600 for (
int i = 0; i <
mySchemeName->getNumItems() - 1; ++i) {
672 std::vector<FXColorWell*>::const_iterator colEnd,
673 std::vector<FXRealSpinDial*>::const_iterator threshIt,
674 std::vector<FXRealSpinDial*>::const_iterator threshEnd,
675 std::vector<FXButton*>::const_iterator buttonIt,
678 while (colIt != colEnd) {
680 if (sender == *colIt) {
684 if (sender == *threshIt) {
685 const SUMOReal val = (*threshIt)->getValue();
689 (*threshIt)->getRange(lo, hi);
690 (*threshIt)->setRange(lo, val);
694 if (threshIt != threshEnd) {
695 (*threshIt)->getRange(lo, hi);
696 (*threshIt)->setRange(val, hi);
701 if (sender == *colIt) {
705 if (sender == *buttonIt) {
730 bool doRebuildColorMatrices =
false;
739 if (GUIVisualizationSettings::UseMesoSim) {
801 doRebuildColorMatrices =
true;
805 doRebuildColorMatrices =
true;
808 doRebuildColorMatrices =
true;
815 doRebuildColorMatrices =
true;
819 doRebuildColorMatrices =
true;
822 doRebuildColorMatrices =
true;
829 doRebuildColorMatrices =
true;
833 doRebuildColorMatrices =
true;
836 doRebuildColorMatrices =
true;
843 doRebuildColorMatrices =
true;
847 doRebuildColorMatrices =
true;
850 doRebuildColorMatrices =
true;
880 if (doRebuildColorMatrices) {
884 getApp()->forceRefresh();
893 if (settingsName !=
"") {
894 FXint index =
mySchemeName->appendItem(settingsName.c_str());
906 std::vector<GUISUMOAbstractView::Decal>::iterator j;
909 dev <<
" <decal filename=\"" << d.
filename
910 <<
"\" centerX=\"" << d.
centerX
911 <<
"\" centerY=\"" << d.
centerY
912 <<
"\" centerZ=\"" << d.
centerZ
913 <<
"\" width=\"" << d.
width
914 <<
"\" height=\"" << d.
height
916 <<
"\" rotation=\"" << d.
rot
917 <<
"\" tilt=\"" << d.
tilt
918 <<
"\" roll=\"" << d.
roll
919 <<
"\" layer=\"" << d.
layer
922 dev <<
"</decals>\n";
925 FXMessageBox::error(
myParent, MBOX_OK,
"Storing failed!",
"%s", e.what());
950 std::string name =
"";
951 while (name.length() == 0) {
952 FXDialogBox dialog(
this,
"Enter a name", DECOR_TITLE | DECOR_BORDER);
953 FXVerticalFrame* content =
new FXVerticalFrame(&dialog, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10);
954 new FXLabel(content,
"Please enter an alphanumeric name: ", NULL, LAYOUT_FILL_X | JUSTIFY_LEFT);
955 FXTextField* text =
new FXTextField(content, 40, &dialog, FXDialogBox::ID_ACCEPT, TEXTFIELD_ENTER_ONLY | FRAME_SUNKEN | FRAME_THICK | LAYOUT_FILL_X);
956 new FXHorizontalSeparator(content, SEPARATOR_GROOVE | LAYOUT_FILL_X);
958 new FXButton(buttons,
"&OK", NULL, &dialog, FXDialogBox::ID_ACCEPT, BUTTON_INITIAL | BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_RIGHT);
959 new FXButton(buttons,
"&Cancel", NULL, &dialog, FXDialogBox::ID_CANCEL, BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_RIGHT, 0, 0, 0, 0, 20, 20);
962 if (!dialog.execute()) {
965 name = text->getText().text();
966 for (
size_t i = 0; i < name.length(); ++i) {
967 if (name[i] !=
'_' && (name[i] <
'a' || name[i] >
'z') && (name[i] <
'A' || name[i] >
'Z') && (name[i] <
'0' || name[i] >
'9')) {
975 tmpSettings.
name = name;
991 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1003 std::string name =
mySchemeName->getItem(index).text();
1014 sender->handle(
this,
1016 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1024 FXFileDialog opendialog(
this,
"Export view settings");
1026 opendialog.setSelectMode(SELECTFILE_ANY);
1027 opendialog.setPatternList(
"*.xml");
1039 FXMessageBox::error(
this, MBOX_OK,
"Storing failed!",
"%s", e.what());
1047 sender->handle(
this,
1049 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1057 FXFileDialog opendialog(
this,
"Import view settings");
1059 opendialog.setSelectMode(SELECTFILE_ANY);
1060 opendialog.setPatternList(
"*.xml");
1064 if (opendialog.execute()) {
1074 FXFileDialog opendialog(
this,
"Load Decals");
1076 opendialog.setSelectMode(SELECTFILE_ANY);
1077 opendialog.setPatternList(
"*.xml");
1081 if (opendialog.execute()) {
1091 FXFileDialog opendialog(
this,
"Save Decals");
1093 opendialog.setSelectMode(SELECTFILE_ANY);
1094 opendialog.setPatternList(
"*.xml");
1110 sender->handle(
this, FXSEL(SEL_COMMAND, ID_ENABLE), ptr);
1128 header->setHeight(getApp()->getNormalFont()->getFontHeight() + getApp()->getNormalFont()->getFontAscent());
1130 for (k = 0; k < 7; k++) {
1131 header->setItemJustify(k, JUSTIFY_CENTER_X | JUSTIFY_TOP);
1132 header->setItemSize(k, 60);
1134 header->setItemSize(0, 150);
1137 std::vector<GUISUMOAbstractView::Decal>::iterator j;
1150 for (k = 0; k < 7; k++) {
1158 std::vector<FXColorWell*>& colors,
1159 std::vector<FXRealSpinDial*>& thresholds,
1160 std::vector<FXButton*>& buttons,
1161 FXCheckButton* interpolation,
1164 FXMatrix* m =
new FXMatrix(frame, 3,
1165 LAYOUT_FILL_X | MATRIX_BY_COLUMNS,
1166 0, 0, 0, 0, 10, 10, 0, 0, 5, 3);
1170 const bool fixed = scheme.
isFixed();
1171 std::vector<RGBColor>::const_iterator colIt = scheme.
getColors().begin();
1172 std::vector<SUMOReal>::const_iterator threshIt = scheme.
getThresholds().begin();
1173 std::vector<std::string>::const_iterator nameIt = scheme.
getNames().begin();
1174 FX::FXString buttonText =
"Add";
1175 while (colIt != scheme.
getColors().end()) {
1178 LAYOUT_FIX_WIDTH | LAYOUT_CENTER_Y | FRAME_SUNKEN | FRAME_THICK | ICON_AFTER_TEXT,
1179 0, 0, 100, 0, 0, 0, 0, 0));
1181 new FXLabel(m, nameIt->c_str());
1186 threshDialer->setValue(*threshIt);
1187 thresholds.push_back(threshDialer);
1188 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));
1189 buttonText =
"Remove";
1197 interpolation->disable();
1199 if (colors.size() > 1) {
1200 interpolation->enable();
1201 if (interpolation->getCheck() != FALSE) {
1202 thresholds.front()->enable();
1204 thresholds.front()->disable();
1207 interpolation->disable();
1208 thresholds.front()->disable();
1220 LAYOUT_FILL_Y | LAYOUT_FIX_WIDTH, 0, 0, 470, 0);
1226 for (
int i = 1; i <= 5; ++i) {
1262 std::string value = i->
item->getText().text();
1264 if (value.find_first_not_of(
" ") == std::string::npos) {
1270 if (row == static_cast<int>(
myDecals->size())) {
1282 }
else if (row > static_cast<int>(
myDecals->size())) {
1286 d = (*myDecals)[row];
1300 std::string msg =
"The value must be a float, is:" + value;
1301 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
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());
1347 (*myDecals)[row] = d;
1367 for (
int i = 0; i <
mySchemeName->getNumItems(); ++i) {
1379 const std::string& title,
1384 FXMatrix* m1 =
new FXMatrix(parent, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
1385 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
1386 new FXLabel(m1,
"Size", 0, LAYOUT_CENTER_Y);
1387 mySizeDial =
new FXRealSpinDial(m1, 10, target, MID_SIMPLE_VIEW_COLORCHANGE,
1388 LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
1391 FXMatrix* m2 =
new FXMatrix(parent, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
1392 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
1393 new FXLabel(m2,
"Color", 0, LAYOUT_CENTER_Y);
1395 target, MID_SIMPLE_VIEW_COLORCHANGE,
1396 LAYOUT_FIX_WIDTH | LAYOUT_CENTER_Y | LAYOUT_SIDE_TOP | FRAME_SUNKEN | FRAME_THICK | ICON_AFTER_TEXT,
1397 0, 0, 100, 0, 0, 0, 0, 0);
1409 myCheck->setCheck(settings.
show);
1410 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)
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
FXDEFMAP(GUIDialog_AppSettings) GUIDialog_AppSettingsMap[]
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
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
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