52 #ifdef CHECK_MEMORY_LEAKS
54 #endif // CHECK_MEMORY_LEAKS
83 FXIMPLEMENT(
GUIDialog_ViewSettings, FXDialogBox, GUIDialog_ViewSettingsMap, ARRAYNUMBER(GUIDialog_ViewSettingsMap))
93 FXDialogBox(parent, "View Settings", DECOR_TITLE | DECOR_BORDER | DECOR_RESIZE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
94 myParent(parent), mySettings(settings),
95 myDecals(decals), myDecalsLock(decalsLock),
97 myBackup = (*mySettings);
99 FXVerticalFrame* contentFrame =
100 new FXVerticalFrame(
this, LAYOUT_SIDE_TOP | LAYOUT_FILL_X | LAYOUT_FILL_Y,
101 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
104 FXHorizontalFrame* frame0 =
105 new FXHorizontalFrame(contentFrame, FRAME_THICK, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
106 mySchemeName =
new FXComboBox(frame0, 20,
this,
MID_SIMPLE_VIEW_NAMECHANGE, COMBOBOX_INSERT_LAST | FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_CENTER_Y | COMBOBOX_STATIC);
108 for (std::vector<std::string>::const_iterator i = names.begin(); i != names.end(); ++i) {
109 int index = mySchemeName->appendItem((*i).c_str());
110 if ((*i) == mySettings->name) {
111 mySchemeName->setCurrentItem((FXint) index);
114 mySchemeName->setNumVisible(5);
116 new FXButton(frame0,
"\t\tSave the setting to registry",
118 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
119 new FXButton(frame0,
"\t\tRemove the setting from registry",
121 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
122 new FXButton(frame0,
"\t\tExport setting to file",
124 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
125 new FXButton(frame0,
"\t\tLoad setting from file",
127 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
129 new FXVerticalSeparator(frame0);
130 new FXLabel(frame0,
"Export includes:", 0, LAYOUT_CENTER_Y);
131 mySaveViewPort =
new FXCheckButton(frame0,
"Viewport");
132 mySaveDelay =
new FXCheckButton(frame0,
"Delay");
133 mySaveDecals =
new FXCheckButton(frame0,
"Decals");
138 new FXTabBook(contentFrame, 0, 0, TABBOOK_LEFTTABS | PACK_UNIFORM_WIDTH | PACK_UNIFORM_HEIGHT | LAYOUT_FILL_X | LAYOUT_FILL_Y | LAYOUT_RIGHT,
139 0, 0, 0, 0, 0, 0, 0, 0);
142 new FXTabItem(tabbook,
"Background", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
143 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
144 FXVerticalFrame* frame1 =
145 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
148 new FXMatrix(frame1, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
149 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
150 new FXLabel(m11,
"Color", 0, LAYOUT_CENTER_Y);
153 LAYOUT_FIX_WIDTH | LAYOUT_CENTER_Y | LAYOUT_SIDE_TOP | FRAME_SUNKEN | FRAME_THICK | ICON_AFTER_TEXT,
154 0, 0, 100, 0, 0, 0, 0, 0);
156 new FXHorizontalSeparator(frame1, SEPARATOR_GROOVE | LAYOUT_FILL_X);
158 FXVerticalFrame* frame11 =
159 new FXVerticalFrame(frame1, LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
160 new FXLabel(frame11,
"Decals:");
161 myDecalsFrame =
new FXVerticalFrame(frame11);
162 FXHorizontalFrame* frame111 =
new FXHorizontalFrame(frame11, LAYOUT_TOP | LAYOUT_LEFT | LAYOUT_FILL_X | PACK_UNIFORM_WIDTH, 0, 0, 0, 0, 10, 10, 5, 5);
163 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);
164 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);
166 new FXHorizontalSeparator(frame1, SEPARATOR_GROOVE | LAYOUT_FILL_X);
169 new FXMatrix(frame1, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
170 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
173 myShowGrid->setCheck(mySettings->showGrid);
174 new FXLabel(m12,
"");
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(m121,
"x-spacing", 0, LAYOUT_CENTER_Y);
181 LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
182 myGridXSizeDialer->setRange(1, 10000);
183 myGridXSizeDialer->setValue(mySettings->gridXSize);
185 new FXMatrix(m12, 2, LAYOUT_CENTER_Y | LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
186 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
187 new FXLabel(m122,
"y-spacing", 0, LAYOUT_CENTER_Y);
190 LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
191 myGridYSizeDialer->setRange(1, 10000);
192 myGridYSizeDialer->setValue(mySettings->gridXSize);
196 new FXTabItem(tabbook,
"Streets", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
197 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
198 FXVerticalFrame* frame2 =
199 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
201 FXVerticalFrame* frame22 =
202 new FXVerticalFrame(frame2, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
204 new FXMatrix(frame22, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
205 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
206 new FXLabel(m21,
"Color", 0, LAYOUT_CENTER_Y);
207 myLaneEdgeColorMode =
new FXComboBox(m21, 30,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
208 myLaneColorInterpolation =
new FXCheckButton(m21,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
209 myLaneColorSettingFrame =
new FXVerticalFrame(frame22, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
211 new FXHorizontalSeparator(frame2, SEPARATOR_GROOVE | LAYOUT_FILL_X);
213 FXVerticalFrame* frame23 =
214 new FXVerticalFrame(frame2, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
216 new FXMatrix(frame23, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
217 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
218 new FXLabel(m23,
"Scale width", 0, LAYOUT_CENTER_Y);
219 myLaneEdgeScaleMode =
new FXComboBox(m23, 30,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
220 myLaneScaleInterpolation =
new FXCheckButton(m23,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
221 myLaneScaleSettingFrame =
new FXVerticalFrame(frame23, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
224 mySettings->edgeColorer.fill(*myLaneEdgeColorMode);
225 mySettings->edgeScaler.fill(*myLaneEdgeScaleMode);
226 myLaneEdgeColorMode->setNumVisible((
int)mySettings->edgeColorer.size());
227 myLaneEdgeScaleMode->setNumVisible((
int)mySettings->edgeScaler.size());
229 mySettings->laneColorer.fill(*myLaneEdgeColorMode);
230 mySettings->laneScaler.fill(*myLaneEdgeScaleMode);
231 myLaneEdgeColorMode->setNumVisible((
int)mySettings->laneColorer.size());
232 myLaneEdgeScaleMode->setNumVisible((
int)mySettings->laneScaler.size());
235 new FXHorizontalSeparator(frame2, SEPARATOR_GROOVE | LAYOUT_FILL_X);
237 new FXMatrix(frame2, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
238 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
240 myShowLaneBorders->setCheck(mySettings->laneShowBorders);
241 new FXLabel(m22,
" ", 0, LAYOUT_CENTER_Y);
243 myShowLaneDecals->setCheck(mySettings->showLinkDecals);
244 new FXLabel(m22,
" ", 0, LAYOUT_CENTER_Y);
246 myShowLinkRules->setCheck(mySettings->showLinkRules);
247 new FXLabel(m22,
" ", 0, LAYOUT_CENTER_Y);
249 myShowRails->setCheck(mySettings->showRails);
250 new FXLabel(m22,
" ", 0, LAYOUT_CENTER_Y);
252 myHideMacroConnectors->setCheck(mySettings->hideConnectors);
253 new FXLabel(m22,
" ", 0, LAYOUT_CENTER_Y);
255 myShowLaneDirection->setCheck(mySettings->showLaneDirection);
256 new FXLabel(m22,
" ", 0, LAYOUT_CENTER_Y);
258 myShowSublanes->setCheck(mySettings->showSublanes);
259 new FXLabel(m22,
" ", 0, LAYOUT_CENTER_Y);
260 new FXLabel(m22,
"Exaggerate width by", 0, LAYOUT_CENTER_Y);
261 myLaneWidthUpscaleDialer =
263 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
264 myLaneWidthUpscaleDialer->setRange(0, 10000);
265 myLaneWidthUpscaleDialer->setValue(mySettings->laneWidthExaggeration);
267 new FXLabel(m22,
"Minimum size", 0, LAYOUT_CENTER_Y);
268 myLaneMinWidthDialer =
270 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
271 myLaneMinWidthDialer->setRange(0, 10000);
272 myLaneMinWidthDialer->setValue(mySettings->laneMinSize);
275 myEdgeNamePanel =
new NamePanel(m22,
this,
"Show edge name", mySettings->edgeName);
276 myStreetNamePanel =
new NamePanel(m22,
this,
"Show street name", mySettings->streetName);
280 new FXTabItem(tabbook,
"Vehicles", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
281 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
282 FXVerticalFrame* frame3 =
283 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
286 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
287 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
288 new FXLabel(m31,
"Show As", 0, LAYOUT_CENTER_Y);
289 myVehicleShapeDetail =
new FXComboBox(m31, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
290 myVehicleShapeDetail->appendItem(
"'triangles'");
291 myVehicleShapeDetail->appendItem(
"'boxes'");
292 myVehicleShapeDetail->appendItem(
"'simple shapes'");
293 myVehicleShapeDetail->appendItem(
"'raster images'");
294 myVehicleShapeDetail->setNumVisible(4);
295 myVehicleShapeDetail->setCurrentItem(settings->vehicleQuality);
297 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
300 new FXMatrix(frame3, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
301 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
302 new FXLabel(m32,
"Color", 0, LAYOUT_CENTER_Y);
303 myVehicleColorMode =
new FXComboBox(m32, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
304 mySettings->vehicleColorer.fill(*myVehicleColorMode);
305 myVehicleColorMode->setNumVisible((
int)mySettings->vehicleColorer.size());
306 myVehicleColorInterpolation =
new FXCheckButton(m32,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
308 myVehicleColorSettingFrame =
309 new FXVerticalFrame(frame3, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
311 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
314 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
315 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
317 myShowBlinker->setCheck(mySettings->showBlinker);
318 new FXLabel(m33,
" ", 0, LAYOUT_CENTER_Y);
320 myShowMinGap->setCheck(mySettings->drawMinGap);
321 new FXLabel(m33,
" ", 0, LAYOUT_CENTER_Y);
323 myShowBTRange->setCheck(mySettings->showBTRange);
324 new FXLabel(m33,
" ", 0, LAYOUT_CENTER_Y);
330 myVehicleNamePanel =
new NamePanel(m33,
this,
"Show vehicle name", mySettings->vehicleName);
338 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
341 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
342 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
343 myVehicleSizePanel =
new SizePanel(m34,
this, mySettings->vehicleSize);
348 new FXTabItem(tabbook,
"Persons", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
349 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
350 FXVerticalFrame* frame3 =
351 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
354 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
355 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
356 new FXLabel(m101,
"Show As", 0, LAYOUT_CENTER_Y);
357 myPersonShapeDetail =
new FXComboBox(m101, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
358 myPersonShapeDetail->appendItem(
"'triangles'");
359 myPersonShapeDetail->appendItem(
"'boxes'");
360 myPersonShapeDetail->appendItem(
"'simple shapes'");
361 myPersonShapeDetail->appendItem(
"'raster images'");
362 myPersonShapeDetail->setNumVisible(4);
363 myPersonShapeDetail->setCurrentItem(settings->personQuality);
365 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
368 new FXMatrix(frame3, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
369 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
370 new FXLabel(m102,
"Color", 0, LAYOUT_CENTER_Y);
371 myPersonColorMode =
new FXComboBox(m102, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
372 mySettings->personColorer.fill(*myPersonColorMode);
373 myPersonColorMode->setNumVisible(10);
374 myPersonColorInterpolation =
new FXCheckButton(m102,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
376 myPersonColorSettingFrame =
377 new FXVerticalFrame(frame3, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
379 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
382 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
383 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
384 myPersonNamePanel =
new NamePanel(m103,
this,
"Show person name", mySettings->personName);
386 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
389 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
390 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
391 myPersonSizePanel =
new SizePanel(m104,
this, mySettings->personSize);
396 new FXTabItem(tabbook,
"Containers", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
397 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
398 FXVerticalFrame* frame3 =
399 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
402 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
403 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
404 new FXLabel(m101,
"Show As", 0, LAYOUT_CENTER_Y);
405 myContainerShapeDetail =
new FXComboBox(m101, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
406 myContainerShapeDetail->appendItem(
"'triangles'");
407 myContainerShapeDetail->appendItem(
"'boxes'");
408 myContainerShapeDetail->appendItem(
"'simple shapes'");
409 myContainerShapeDetail->appendItem(
"'raster images'");
410 myContainerShapeDetail->setNumVisible(4);
411 myContainerShapeDetail->setCurrentItem(settings->containerQuality);
413 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
416 new FXMatrix(frame3, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
417 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
418 new FXLabel(m102,
"Color", 0, LAYOUT_CENTER_Y);
419 myContainerColorMode =
new FXComboBox(m102, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
420 mySettings->containerColorer.fill(*myContainerColorMode);
421 myContainerColorMode->setNumVisible(9);
422 myContainerColorInterpolation =
new FXCheckButton(m102,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
424 myContainerColorSettingFrame =
425 new FXVerticalFrame(frame3, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
427 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
430 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
431 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
432 myContainerNamePanel =
new NamePanel(m103,
this,
"Show container name", mySettings->containerName);
434 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
437 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
438 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
439 myContainerSizePanel =
new SizePanel(m104,
this, mySettings->containerSize);
443 new FXTabItem(tabbook,
"Junctions", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
444 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
445 FXVerticalFrame* frame4 =
446 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
448 new FXMatrix(frame4, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
449 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
450 new FXLabel(m41,
"Color", 0, LAYOUT_CENTER_Y);
451 myJunctionColorMode =
new FXComboBox(m41, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
452 mySettings->junctionColorer.fill(*myJunctionColorMode);
453 myJunctionColorMode->setNumVisible(3);
454 myJunctionColorInterpolation =
new FXCheckButton(m41,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
456 myJunctionColorSettingFrame =
457 new FXVerticalFrame(frame4, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
459 new FXHorizontalSeparator(frame4, SEPARATOR_GROOVE | LAYOUT_FILL_X);
461 new FXMatrix(frame4, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
462 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
463 myTLIndexPanel =
new NamePanel(m42,
this,
"Show link tls index", mySettings->drawLinkTLIndex);
464 myJunctionIndexPanel =
new NamePanel(m42,
this,
"Show link junction index", mySettings->drawLinkJunctionIndex);
466 myShowLane2Lane->setCheck(mySettings->showLane2Lane);
467 new FXLabel(m42,
" ", 0, LAYOUT_CENTER_Y);
468 myJunctionNamePanel =
new NamePanel(m42,
this,
"Show junction name", mySettings->junctionName);
469 myInternalJunctionNamePanel =
new NamePanel(m42,
this,
"Show internal junction name", mySettings->internalJunctionName);
470 myInternalEdgeNamePanel =
new NamePanel(m42,
this,
"Show internal edge name", mySettings->internalEdgeName);
471 myCwaEdgeNamePanel =
new NamePanel(m42,
this,
"Show crossing and walkingarea name", mySettings->cwaEdgeName);
473 myDrawJunctionShape->setCheck(mySettings->drawJunctionShape);
475 myDrawCrossingsAndWalkingAreas->setCheck(mySettings->drawCrossingsAndWalkingareas);
477 new FXHorizontalSeparator(frame4, SEPARATOR_GROOVE | LAYOUT_FILL_X);
480 new FXMatrix(frame4, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
481 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
482 myJunctionSizePanel =
new SizePanel(m43,
this, mySettings->junctionSize);
485 new FXTabItem(tabbook,
"Detectors/Trigger", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
486 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
487 FXVerticalFrame* frame5 =
488 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
491 new FXMatrix(frame5, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
492 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
493 myAddNamePanel =
new NamePanel(m51,
this,
"Show detector name", mySettings->addName);
494 new FXHorizontalSeparator(frame5 , SEPARATOR_GROOVE | LAYOUT_FILL_X);
497 new FXMatrix(frame5, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
498 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
499 myAddSizePanel =
new SizePanel(m52,
this, mySettings->addSize);
510 new FXTabItem(tabbook,
"POIs", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
511 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
512 FXVerticalFrame* frame6 =
513 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
516 new FXMatrix(frame6, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
517 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
518 myPOINamePanel =
new NamePanel(m61,
this,
"Show poi names", mySettings->poiName);
519 myPOITypePanel =
new NamePanel(m61,
this,
"Show poi types", mySettings->poiType);
520 new FXHorizontalSeparator(frame6 , SEPARATOR_GROOVE | LAYOUT_FILL_X);
523 new FXMatrix(frame6, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
524 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
525 myPOISizePanel =
new SizePanel(m62,
this, mySettings->poiSize);
529 new FXTabItem(tabbook,
"Polygons", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
530 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
531 FXVerticalFrame* frame9 =
532 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
535 new FXMatrix(frame9, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
536 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
537 myPolyNamePanel =
new NamePanel(m91,
this,
"Show polygon names", mySettings->polyName);
538 myPolyTypePanel =
new NamePanel(m91,
this,
"Show polygon types", mySettings->polyType);
539 new FXHorizontalSeparator(frame9 , SEPARATOR_GROOVE | LAYOUT_FILL_X);
541 myPolySizePanel =
new SizePanel(m91,
this, mySettings->polySize);
545 new FXTabItem(tabbook,
"Legend", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
546 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
547 FXVerticalFrame* frame7 =
548 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
551 new FXMatrix(frame7, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
552 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
554 myShowSizeLegend->setCheck(mySettings->showSizeLegend);
555 new FXLabel(m72,
"");
558 new FXTabItem(tabbook,
"openGL", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
559 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
560 FXVerticalFrame* frame8 =
561 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
564 new FXMatrix(frame8, 1, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
565 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
567 myAntialiase->setCheck(mySettings->antialiase);
569 myDither->setCheck(mySettings->dither);
571 FXHorizontalFrame* f2 =
new FXHorizontalFrame(contentFrame, LAYOUT_TOP | LAYOUT_LEFT | LAYOUT_FILL_X | PACK_UNIFORM_WIDTH, 0, 0, 0, 0, 10, 10, 5, 5);
572 FXButton* initial =
new FXButton(f2,
"&OK", 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);
573 new FXButton(f2,
"&Cancel", 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);
576 rebuildColorMatrices(
false);
579 const FXint minSize = 400;
580 setX(
MIN2(getApp()->reg().readIntEntry(
"VIEWSETTINGS",
"x", 150), getApp()->getRootWindow()->getWidth() - minSize));
581 setY(
MIN2(getApp()->reg().readIntEntry(
"VIEWSETTINGS",
"y", 150), getApp()->getRootWindow()->getHeight() - minSize));
582 setWidth(
MAX2(getApp()->reg().readIntEntry(
"VIEWSETTINGS",
"width", 700), minSize));
583 setHeight(
MAX2(getApp()->reg().readIntEntry(
"VIEWSETTINGS",
"height", 500), minSize));
642 FXString dataS = (
char*) data;
645 for (
int i = 0; i <
mySchemeName->getNumItems() - 1; ++i) {
729 std::vector<FXColorWell*>::const_iterator colEnd,
730 std::vector<FXRealSpinDial*>::const_iterator threshIt,
731 std::vector<FXRealSpinDial*>::const_iterator threshEnd,
732 std::vector<FXButton*>::const_iterator buttonIt,
735 while (colIt != colEnd) {
737 if (sender == *colIt) {
741 if (sender == *threshIt) {
742 const SUMOReal val = (*threshIt)->getValue();
746 (*threshIt)->getRange(lo, hi);
747 (*threshIt)->setRange(lo, val);
751 if (threshIt != threshEnd) {
752 (*threshIt)->getRange(lo, hi);
753 (*threshIt)->setRange(val, hi);
758 if (sender == *colIt) {
762 if (sender == *buttonIt) {
782 std::vector<FXRealSpinDial*>::const_iterator scaleEnd,
783 std::vector<FXRealSpinDial*>::const_iterator threshIt,
784 std::vector<FXRealSpinDial*>::const_iterator threshEnd,
785 std::vector<FXButton*>::const_iterator buttonIt,
788 while (scaleIt != scaleEnd) {
790 if (sender == *scaleIt) {
791 scheme.
setColor(pos, (*scaleIt)->getValue());
794 if (sender == *threshIt) {
795 const SUMOReal val = (*threshIt)->getValue();
799 (*threshIt)->getRange(lo, hi);
800 (*threshIt)->setRange(lo, val);
804 if (threshIt != threshEnd) {
805 (*threshIt)->getRange(lo, hi);
806 (*threshIt)->setRange(val, hi);
811 if (sender == *scaleIt) {
812 scheme.
setColor(pos, (*scaleIt)->getValue());
815 if (sender == *buttonIt) {
817 scheme.
addColor((*scaleIt)->getValue(), (*threshIt)->getValue());
842 bool doRebuildColorMatrices =
false;
922 doRebuildColorMatrices =
true;
926 doRebuildColorMatrices =
true;
929 doRebuildColorMatrices =
true;
936 doRebuildColorMatrices =
true;
940 doRebuildColorMatrices =
true;
943 doRebuildColorMatrices =
true;
950 doRebuildColorMatrices =
true;
954 doRebuildColorMatrices =
true;
957 doRebuildColorMatrices =
true;
964 doRebuildColorMatrices =
true;
968 doRebuildColorMatrices =
true;
971 doRebuildColorMatrices =
true;
978 doRebuildColorMatrices =
true;
982 doRebuildColorMatrices =
true;
985 doRebuildColorMatrices =
true;
992 doRebuildColorMatrices =
true;
996 doRebuildColorMatrices =
true;
999 doRebuildColorMatrices =
true;
1029 if (doRebuildColorMatrices) {
1033 getApp()->forceRefresh();
1042 if (settingsName !=
"") {
1043 FXint index =
mySchemeName->appendItem(settingsName.c_str());
1064 std::vector<GUISUMOAbstractView::Decal>::iterator j;
1105 std::string name =
"";
1106 while (name.length() == 0) {
1107 FXDialogBox dialog(
this,
"Enter a name", DECOR_TITLE | DECOR_BORDER);
1108 FXVerticalFrame* content =
new FXVerticalFrame(&dialog, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10);
1109 new FXLabel(content,
"Please enter an alphanumeric name: ", NULL, LAYOUT_FILL_X | JUSTIFY_LEFT);
1110 FXTextField* text =
new FXTextField(content, 40, &dialog, FXDialogBox::ID_ACCEPT, TEXTFIELD_ENTER_ONLY | FRAME_SUNKEN | FRAME_THICK | LAYOUT_FILL_X);
1111 new FXHorizontalSeparator(content, SEPARATOR_GROOVE | LAYOUT_FILL_X);
1112 FXHorizontalFrame* buttons =
new FXHorizontalFrame(content, LAYOUT_FILL_X | PACK_UNIFORM_WIDTH, 0, 0, 0, 0, 0, 0, 0, 0);
1113 new FXButton(buttons,
"&OK", NULL, &dialog, FXDialogBox::ID_ACCEPT, BUTTON_INITIAL | BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_RIGHT);
1114 new FXButton(buttons,
"&Cancel", NULL, &dialog, FXDialogBox::ID_CANCEL, BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_RIGHT, 0, 0, 0, 0, 20, 20);
1117 if (!dialog.execute()) {
1120 name = text->getText().text();
1121 for (
int i = 0; i < (int)name.length(); ++i) {
1122 if (name[i] !=
'_' && (name[i] <
'a' || name[i] >
'z') && (name[i] <
'A' || name[i] >
'Z') && (name[i] <
'0' || name[i] >
'9')) {
1130 tmpSettings.
name = name;
1144 sender->handle(
this,
1146 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1158 std::string name =
mySchemeName->getItem(index).text();
1169 sender->handle(
this,
1171 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1201 FXMessageBox::error(
this, MBOX_OK,
"Storing failed!",
"%s", e.what());
1209 sender->handle(
this,
1212 FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1220 FXFileDialog opendialog(
this,
"Import view settings");
1222 opendialog.setSelectMode(SELECTFILE_ANY);
1223 opendialog.setPatternList(
"*.xml");
1227 if (opendialog.execute()) {
1237 FXFileDialog opendialog(
this,
"Load Decals");
1239 opendialog.setSelectMode(SELECTFILE_ANY);
1240 opendialog.setPatternList(
"*.xml");
1244 if (opendialog.execute()) {
1265 FXMessageBox::error(
myParent, MBOX_OK,
"Storing failed!",
"%s", e.what());
1275 sender->handle(
this, FXSEL(SEL_COMMAND, ID_ENABLE), ptr);
1285 const int numRows =
MAX2((
int)10, (
int)
myDecals->size() + 1);
1296 header->setHeight(getApp()->getNormalFont()->getFontHeight() + getApp()->getNormalFont()->getFontAscent());
1298 for (k = 0; k < cols; k++) {
1299 header->setItemJustify(k, JUSTIFY_CENTER_X | JUSTIFY_TOP);
1300 header->setItemSize(k, 60);
1302 header->setItemSize(0, 150);
1305 std::vector<GUISUMOAbstractView::Decal>::iterator j;
1319 for (k = 0; k < 7; k++) {
1327 std::vector<FXColorWell*>& colors,
1328 std::vector<FXRealSpinDial*>& thresholds,
1329 std::vector<FXButton*>& buttons,
1330 FXCheckButton* interpolation,
1333 FXMatrix* m =
new FXMatrix(frame, 3,
1334 LAYOUT_FILL_X | MATRIX_BY_COLUMNS,
1335 0, 0, 0, 0, 10, 10, 0, 0, 5, 3);
1339 const bool fixed = scheme.
isFixed();
1340 std::vector<RGBColor>::const_iterator colIt = scheme.
getColors().begin();
1341 std::vector<SUMOReal>::const_iterator threshIt = scheme.
getThresholds().begin();
1342 std::vector<std::string>::const_iterator nameIt = scheme.
getNames().begin();
1343 FX::FXString buttonText =
"Add";
1344 while (colIt != scheme.
getColors().end()) {
1347 LAYOUT_FIX_WIDTH | LAYOUT_CENTER_Y | FRAME_SUNKEN | FRAME_THICK | ICON_AFTER_TEXT,
1348 0, 0, 100, 0, 0, 0, 0, 0));
1350 new FXLabel(m, nameIt->c_str());
1355 threshDialer->setValue(*threshIt);
1356 thresholds.push_back(threshDialer);
1357 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));
1358 buttonText =
"Remove";
1366 interpolation->disable();
1368 if (colors.size() > 1) {
1369 interpolation->enable();
1370 if (interpolation->getCheck() != FALSE) {
1371 thresholds.front()->enable();
1373 thresholds.front()->disable();
1376 interpolation->disable();
1377 thresholds.front()->disable();
1386 std::vector<FXRealSpinDial*>& scales,
1387 std::vector<FXRealSpinDial*>& thresholds,
1388 std::vector<FXButton*>& buttons,
1389 FXCheckButton* interpolation,
1392 FXMatrix* m =
new FXMatrix(frame, 3,
1393 LAYOUT_FILL_X | MATRIX_BY_COLUMNS,
1394 0, 0, 0, 0, 10, 10, 0, 0, 5, 3);
1398 const bool fixed = scheme.
isFixed();
1399 std::vector<SUMOReal>::const_iterator scaleIt = scheme.
getColors().begin();
1400 std::vector<SUMOReal>::const_iterator threshIt = scheme.
getThresholds().begin();
1401 std::vector<std::string>::const_iterator nameIt = scheme.
getNames().begin();
1402 FX::FXString buttonText =
"Add";
1403 while (scaleIt != scheme.
getColors().end()) {
1405 scaleDialer->setValue(*scaleIt);
1406 scales.push_back(scaleDialer);
1408 new FXLabel(m, nameIt->c_str());
1413 threshDialer->setValue(*threshIt);
1414 thresholds.push_back(threshDialer);
1415 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));
1416 buttonText =
"Remove";
1424 interpolation->disable();
1426 if (scales.size() > 1) {
1427 interpolation->enable();
1428 if (interpolation->getCheck() != FALSE) {
1429 thresholds.front()->enable();
1431 thresholds.front()->disable();
1434 interpolation->disable();
1435 thresholds.front()->disable();
1447 LAYOUT_FILL_Y | LAYOUT_FIX_WIDTH, 0, 0, 470, 0);
1453 for (
int i = 1; i <= 5; ++i) {
1503 std::string value = i->
item->getText().text();
1505 if (value.find_first_not_of(
" ") == std::string::npos) {
1511 if (row == static_cast<int>(
myDecals->size())) {
1524 }
else if (row > static_cast<int>(
myDecals->size())) {
1528 d = (*myDecals)[row];
1542 std::string msg =
"The value must be a float, is:" + value;
1543 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1550 std::string msg =
"The value must be a float, is:" + value;
1551 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1558 std::string msg =
"The value must be a float, is:" + value;
1559 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1566 std::string msg =
"The value must be a float, is:" + value;
1567 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1574 std::string msg =
"The value must be a float, is:" + value;
1575 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1582 std::string msg =
"The value must be a float, is:" + value;
1583 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1590 std::string msg =
"The value must be a bool, is:" + value;
1591 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1597 (*myDecals)[row] = d;
1617 for (
int i = 0; i <
mySchemeName->getNumItems(); ++i) {
1629 const std::string& title,
1633 new FXLabel(parent,
"");
1634 FXMatrix* m1 =
new FXMatrix(parent, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
1635 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
1636 new FXLabel(m1,
"Size", 0, LAYOUT_CENTER_Y);
1637 mySizeDial =
new FXRealSpinDial(m1, 10, target, MID_SIMPLE_VIEW_COLORCHANGE,
1638 LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
1641 FXMatrix* m2 =
new FXMatrix(parent, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
1642 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
1643 new FXLabel(m2,
"Color", 0, LAYOUT_CENTER_Y);
1645 target, MID_SIMPLE_VIEW_COLORCHANGE,
1646 LAYOUT_FIX_WIDTH | LAYOUT_CENTER_Y | LAYOUT_SIDE_TOP | FRAME_SUNKEN | FRAME_THICK | ICON_AFTER_TEXT,
1647 0, 0, 100, 0, 0, 0, 0, 0);
1660 myCheck->setCheck(settings.
show);
1661 mySizeDial->setValue(settings.
size);
1670 myCheck =
new FXCheckButton(parent,
"Draw with constant size when zoomed out", target,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
1672 new FXLabel(parent,
"");
1673 FXMatrix* m1 =
new FXMatrix(parent, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
1674 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
1675 new FXLabel(m1,
"Minimum Size", 0, LAYOUT_CENTER_Y);
1677 LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
1678 myMinSizeDial->setValue(settings.
minSize);
1679 FXMatrix* m2 =
new FXMatrix(parent, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
1680 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
1681 new FXLabel(m2,
"Exaggerate by", 0, LAYOUT_CENTER_Y);
1683 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
1684 myExaggerateDial->setRange(0, 10000);
1692 myMinSizeDial->getValue(), myExaggerateDial->getValue(), myCheck->getCheck() != FALSE);
1699 myMinSizeDial->setValue(settings.
minSize);
1706 getApp()->reg().writeIntEntry(
"VIEWSETTINGS",
"x", getX());
1707 getApp()->reg().writeIntEntry(
"VIEWSETTINGS",
"y", getY());
1708 getApp()->reg().writeIntEntry(
"VIEWSETTINGS",
"width", getWidth());
1709 getApp()->reg().writeIntEntry(
"VIEWSETTINGS",
"height", getHeight());
void rebuildColorMatrices(bool doCreate=false)
Rebuilds color changing dialogs after choosing another coloring scheme.
GUIVisualizationSizeSettings junctionSize
GUIDialog_EditViewport * getViewportEditor()
get the viewport and create it on first access
GUIVisualizationTextSettings junctionName
A decal (an image) that can be shown.
FXCheckButton * mySaveViewPort
FXVerticalFrame * myVehicleColorSettingFrame
long onUpdSaveSetting(FXObject *, FXSelector, void *data)
Called when updating the button that allows to save the settings into the registry.
int getNumInitialSettings() const
Returns the number of initial settings.
FXCheckButton * myLaneColorInterpolation
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
FXComboBox * myJunctionColorMode
void close()
Closes the device and removes it from the dictionary.
FXVerticalFrame * myDecalsFrame
const std::vector< T > & getColors() const
GUICompleteSchemeStorage gSchemeStorage
bool showSizeLegend
Information whether the size legend shall be drawn.
FXCheckButton * myJunctionColorInterpolation
FXCheckButton * myShowBlinker
bool isInterpolated() const
GUIVisualizationTextSettings poiType
FXVerticalFrame * myLaneScaleSettingFrame
FXCheckButton * myShowBTRange
GUIVisualizationTextSettings streetName
SUMOReal roll
The roll of the image to the ground plane (in degrees)
std::string addSettings(GUISUMOAbstractView *view=0) const
Adds the parsed settings to the global list of settings.
bool showBlinker
Information whether vehicle blinkers shall be drawn.
GUIVisualizationTextSettings addName
FXComboBox * myVehicleColorMode
GUIVisualizationTextSettings personName
void setThreshold(const int pos, const SUMOReal threshold)
std::vector< FXButton * > myLaneButtons
static SUMOReal _2SUMOReal(const E *const data)
converts a char-type array into the SUMOReal value described by it
SizePanel * myPOISizePanel
FXDEFMAP(GUIDialog_ViewSettings) GUIDialog_ViewSettingsMap[]
GUIVisualizationTextSettings poiName
static bool _2bool(const E *const data)
converts a 0-terminated char-type array into the boolean value described by it
FXCheckButton * myShowLinkRules
GUIColorScheme & getLaneEdgeScheme()
Returns the current lane (edge) coloring schme.
bool showBTRange
Information whether the communication range shall be drawn.
GUIColorer laneColorer
The lane colorer.
SUMOReal laneWidthExaggeration
The lane exaggeration (upscale thickness)
GUIColorer containerColorer
The container colorer.
Stores the information about how to visualize structures.
The dialog to change the view (gui) settings.
SUMOReal minSize
The minimum size to draw this object.
SizePanel(FXMatrix *parent, GUIDialog_ViewSettings *target, const GUIVisualizationSizeSettings &settings)
NamePanel * myPolyTypePanel
GUIColorer edgeColorer
The mesoscopic edge colorer.
static RGBColor getRGBColor(FXColor col)
converts FXColor to RGBColor
void remove(GUIDialog_EditViewport *)
remove viewport
std::vector< FXRealSpinDial * > myLaneScaleThresholds
std::vector< GUISUMOAbstractView::Decal > * myDecals
The parent's decals.
NamePanel * myPOINamePanel
bool showRails
Information whether rails shall be drawn.
void loadDecals(const std::string &file)
Loads decals from a file.
std::vector< FXButton * > myPersonButtons
FXMatrix * rebuildScaleMatrix(FXVerticalFrame *frame, std::vector< FXRealSpinDial * > &scales, std::vector< FXRealSpinDial * > &thresholds, std::vector< FXButton * > &buttons, FXCheckButton *interpolation, GUIScaleScheme &scheme)
Rebuilds manipulators for the current scaling scheme.
std::vector< FXColorWell * > myJunctionColors
GUIVisualizationTextSettings vehicleName
FXComboBox * myVehicleShapeDetail
FXCheckButton * myShowSublanes
bool screenRelative
Whether this image should be skipped in 2D-views.
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.
For the export-to-file - button.
bool showLaneDirection
Whether to show direction indicators for lanes.
void writeXML(OutputDevice &dev)
write the settings to the given device
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
get grid Height
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.
SUMOReal width
The width of the image (net coordinates in x-direction, in m)
SizePanel * myJunctionSizePanel
bool showLinkRules
Information whether link rules (colored bars) shall be drawn.
long onCmdEditTable(FXObject *, FXSelector, void *data)
Called if the decals-table was changed.
FXCheckButton * mySaveDelay
static FXString getFilename2Write(FXWindow *parent, const FXString &header, const FXString &extension, FXIcon *icon, FXString ¤tFolder)
Returns the file name to write.
bool dither
Information whether dithering shall be enabled.
FXVerticalFrame * myContainerColorSettingFrame
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.
SizePanel * myPolySizePanel
void setActive(int scheme)
GUIVisualizationSizeSettings polySize
GUIColorer vehicleColorer
The vehicle colorer.
SUMOReal getDelay() const
Returns the parsed delay.
FXCheckButton * myShowLaneDirection
GUIVisualizationTextSettings edgeName
void setInterpolated(const bool interpolate, SUMOReal interpolationStart=0.f)
std::vector< FXButton * > myContainerButtons
FXCheckButton * myVehicleColorInterpolation
GUIVisualizationSizeSettings addSize
const std::vector< std::string > & getNames() const
Returns a list of stored settings names.
void setNumberCellParams(int pos, double min, double max, double steps1, double steps2, double steps3, const std::string &format)
NamePanel * myInternalEdgeNamePanel
FXCheckButton * myShowMinGap
NamePanel * myEdgeNamePanel
void setCellType(int pos, CellType t)
FXCheckButton * myShowGrid
int addColor(const T &color, const SUMOReal threshold, const std::string &name="")
std::string name
The name of this setting.
void setCurrentScheme(const std::string &)
Sets the named scheme as the current.
FXCheckButton * myShowLane2Lane
void rebuildList()
Rebuilds the decals table.
void update(const GUIVisualizationSizeSettings &settings)
void applyViewport(GUISUMOAbstractView *view) const
Sets the viewport which has been parsed.
SUMOReal altitude
The altitude of the image (net coordinates in z-direction, in m)
FXCheckButton * myDrawCrossingsAndWalkingAreas
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 manipulators for the current coloring scheme.
std::vector< FXRealSpinDial * > myLaneScales
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
int getLaneEdgeMode() const
Returns the number of the active lane (edge) coloring schme.
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
Cancel-button was pushed.
void remove(const std::string &name)
Removes the setting with the given name.
GUIVisualizationTextSettings polyType
bool showSublanes
Whether to show sublane boundaries.
void saveWindowSize()
save window position and size to the registry
FXCheckButton * myShowSizeLegend
GUIVisualizationSettings & get(const std::string &name)
Returns the named scheme.
bool allowsNegativeValues() const
FXCheckButton * mySaveDecals
FXVerticalFrame * myLaneColorSettingFrame
FXComboBox & getColoringSchemesCombo()
get coloring schemes combo
FXRealSpinDial * myLaneMinWidthDialer
SUMOReal exaggeration
The size exaggeration (upscale)
bool initialised
Whether this image was initialised (inserted as a texture)
GUIVisualizationTextSettings drawLinkTLIndex
GUIColorer personColorer
The person colorer.
int getLaneEdgeScaleMode() const
Returns the number of the active lane (edge) scaling schme.
GUIVisualizationTextSettings internalJunctionName
For the import-from-file - button.
const std::vector< std::string > & getNames() const
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.
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 * myLaneScaleInterpolation
GUIScaler edgeScaler
The mesoscopic edge scaler.
SUMOReal getDelay() const
Returns the delay of the parent application.
FXCheckButton * myShowLaneBorders
SizePanel * myAddSizePanel
NamePanel * myAddNamePanel
GUIScaleScheme & getLaneEdgeScaleScheme()
Returns the current lane (edge) scaling schme.
std::vector< FXColorWell * > myPersonColors
FXRealSpinDial * myGridYSizeDialer
int containerQuality
The quality of container drawing.
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.
std::vector< FXButton * > myLaneScaleButtons
void saveDecals(OutputDevice &dev) const
Writes the currently used decals into a file.
Informs the dialog about a value's change.
long onCmdOk(FXObject *, FXSelector, void *)
Called if the OK-button was pressed.
NamePanel * myCwaEdgeNamePanel
void setColor(const int pos, const T &color)
virtual bool setColorScheme(const std::string &)
set color scheme
For the save-decals - button.
void unlock()
release mutex lock
For the load-decals - button.
SUMOReal height
The height of the image (net coordinates in y-direction, in m)
FXComboBox * myContainerColorMode
GUIVisualizationSizeSettings poiSize
~GUIDialog_ViewSettings()
Destructor.
NamePanel * myTLIndexPanel
bool updateScaleRanges(FXObject *sender, std::vector< FXRealSpinDial * >::const_iterator colIt, std::vector< FXRealSpinDial * >::const_iterator colEnd, std::vector< FXRealSpinDial * >::const_iterator threshIt, std::vector< FXRealSpinDial * >::const_iterator threshEnd, std::vector< FXButton * >::const_iterator buttonIt, GUIScaleScheme &scheme)
SUMOReal centerX
The center of the image in x-direction (net coordinates, in m)
NamePanel * myVehicleNamePanel
NamePanel * myContainerNamePanel
MFXAddEditTypedTable * myDecalsTable
FXCheckButton * myDrawJunctionShape
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
FXRealSpinDial * mySizeDial
NamePanel(FXMatrix *parent, GUIDialog_ViewSettings *target, const std::string &title, const GUIVisualizationTextSettings &settings)
GUIVisualizationSizeSettings containerSize
FXComboBox * myLaneEdgeScaleMode
... lane scaler
void removeColor(const int pos)
static OutputDevice & getDevice(const std::string &name)
Returns the described OutputDevice.
GUIVisualizationTextSettings getSettings()
FXComboBox * myPersonShapeDetail
Informs the dialog about switching to another scheme.
NamePanel * myJunctionNamePanel
void writeSettings(FXApp *app)
Writes the current scheme into the registry.
FXComboBox * myLaneEdgeColorMode
... lane colorer
void setCurrent(GUIVisualizationSettings *settings)
Sets current settings (called if reopened)
FXCheckButton * myHideMacroConnectors
SUMOReal getGridWidth() const
get grid width
FXCheckButton * myShowRails
GUIVisualizationSizeSettings personSize
int personQuality
The quality of person drawing.
bool showGrid
Information whether a grid shall be shown.
bool drawCrossingsAndWalkingareas
whether crosings and walkingareas shall be drawn
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.
NamePanel * myPOITypePanel
long onCmdColorChange(FXObject *, FXSelector, void *)
Called if something (color, width, etc.) has been changed.
bool showLane2Lane
Information whether lane-to-lane arrows shall be drawn.
void setDelay(SUMOReal delay)
Sets the delay of the parent application.
SizePanel * myPersonSizePanel
Static storage of an output device and its base (abstract) implementation.
bool closeTag()
Closes the most recently opened tag.
FXRealSpinDial * myGridXSizeDialer
An XML-handler for visualisation schemes.
void save(OutputDevice &dev) const
Writes the settings into an output device.
NamePanel * myJunctionIndexPanel
FXCheckButton * myPersonColorInterpolation
GUIVisualizationSizeSettings vehicleSize
SizePanel * myVehicleSizePanel
bool drawJunctionShape
whether the shape of the junction should be drawn
std::vector< FXRealSpinDial * > myContainerThresholds
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)
GUIVisualizationSizeSettings getSettings()
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)
static bool UseMesoSim
this should be set at the same time as MSGlobals::gUseMesoSim
MFXMutex * myDecalsLock
Lock used when changing the decals.
SizePanel * myContainerSizePanel
SUMOReal laneMinSize
The minimum visual lane width for drawing.
std::vector< FXRealSpinDial * > myJunctionThresholds
FXCheckButton * myContainerColorInterpolation
GUIScaler laneScaler
The lane scaler.
FXCheckButton * myAntialiase
const std::vector< SUMOReal > & getThresholds() const
FXComboBox * myContainerShapeDetail
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
std::vector< FXColorWell * > myContainerColors
static FXIcon * getIcon(GUIIcon which)
returns a icon previously defined in the enum GUIIcon
std::vector< FXButton * > myJunctionButtons
GUIVisualizationTextSettings drawLinkJunctionIndex
NamePanel * myPersonNamePanel
GUIVisualizationSettings myBackup
A backup of the settings (used if the "Cancel" button is pressed)
std::vector< FXColorWell * > myLaneColors
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
FXComboBox * mySchemeName
std::vector< FXRealSpinDial * > myLaneThresholds
std::vector< FXButton * > myVehicleButtons
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
For the save-to-db - button.
long onUpdImportSetting(FXObject *, FXSelector, void *data)
Called when updating the button that allows to read settings from a file.
GUIVisualizationTextSettings polyName
GUIVisualizationTextSettings containerName
FXCheckButton * myShowLaneDecals