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 myShowRails->setCheck(mySettings->showRails);
247 new FXLabel(m22,
" ", 0, LAYOUT_CENTER_Y);
249 myHideMacroConnectors->setCheck(mySettings->hideConnectors);
250 new FXLabel(m22,
" ", 0, LAYOUT_CENTER_Y);
252 myShowLaneDirection->setCheck(mySettings->showLaneDirection);
253 new FXLabel(m22,
" ", 0, LAYOUT_CENTER_Y);
255 myShowSublanes->setCheck(mySettings->showSublanes);
256 new FXLabel(m22,
" ", 0, LAYOUT_CENTER_Y);
257 new FXLabel(m22,
"Exaggerate width by", 0, LAYOUT_CENTER_Y);
258 myLaneWidthUpscaleDialer =
260 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
261 myLaneWidthUpscaleDialer->setRange(0, 10000);
262 myLaneWidthUpscaleDialer->setValue(mySettings->laneWidthExaggeration);
264 new FXLabel(m22,
"Minimum size", 0, LAYOUT_CENTER_Y);
265 myLaneMinWidthDialer =
267 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
268 myLaneMinWidthDialer->setRange(0, 10000);
269 myLaneMinWidthDialer->setValue(mySettings->laneMinSize);
272 myEdgeNamePanel =
new NamePanel(m22,
this,
"Show edge name", mySettings->edgeName);
273 myStreetNamePanel =
new NamePanel(m22,
this,
"Show street name", mySettings->streetName);
277 new FXTabItem(tabbook,
"Vehicles", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
278 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
279 FXVerticalFrame* frame3 =
280 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
283 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
284 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
285 new FXLabel(m31,
"Show As", 0, LAYOUT_CENTER_Y);
286 myVehicleShapeDetail =
new FXComboBox(m31, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
287 myVehicleShapeDetail->appendItem(
"'triangles'");
288 myVehicleShapeDetail->appendItem(
"'boxes'");
289 myVehicleShapeDetail->appendItem(
"'simple shapes'");
290 myVehicleShapeDetail->appendItem(
"'raster images'");
291 myVehicleShapeDetail->setNumVisible(4);
292 myVehicleShapeDetail->setCurrentItem(settings->vehicleQuality);
294 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
297 new FXMatrix(frame3, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
298 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
299 new FXLabel(m32,
"Color", 0, LAYOUT_CENTER_Y);
300 myVehicleColorMode =
new FXComboBox(m32, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
301 mySettings->vehicleColorer.fill(*myVehicleColorMode);
302 myVehicleColorMode->setNumVisible((
int)mySettings->vehicleColorer.size());
303 myVehicleColorInterpolation =
new FXCheckButton(m32,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
305 myVehicleColorSettingFrame =
306 new FXVerticalFrame(frame3, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
308 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
311 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
312 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
314 myShowBlinker->setCheck(mySettings->showBlinker);
315 new FXLabel(m33,
" ", 0, LAYOUT_CENTER_Y);
317 myShowMinGap->setCheck(mySettings->drawMinGap);
318 new FXLabel(m33,
" ", 0, LAYOUT_CENTER_Y);
320 myShowBTRange->setCheck(mySettings->showBTRange);
321 new FXLabel(m33,
" ", 0, LAYOUT_CENTER_Y);
327 myVehicleNamePanel =
new NamePanel(m33,
this,
"Show vehicle name", mySettings->vehicleName);
335 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
338 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
339 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
340 myVehicleSizePanel =
new SizePanel(m34,
this, mySettings->vehicleSize);
345 new FXTabItem(tabbook,
"Persons", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
346 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
347 FXVerticalFrame* frame3 =
348 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
351 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
352 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
353 new FXLabel(m101,
"Show As", 0, LAYOUT_CENTER_Y);
354 myPersonShapeDetail =
new FXComboBox(m101, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
355 myPersonShapeDetail->appendItem(
"'triangles'");
356 myPersonShapeDetail->appendItem(
"'boxes'");
357 myPersonShapeDetail->appendItem(
"'simple shapes'");
358 myPersonShapeDetail->appendItem(
"'raster images'");
359 myPersonShapeDetail->setNumVisible(4);
360 myPersonShapeDetail->setCurrentItem(settings->personQuality);
362 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
365 new FXMatrix(frame3, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
366 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
367 new FXLabel(m102,
"Color", 0, LAYOUT_CENTER_Y);
368 myPersonColorMode =
new FXComboBox(m102, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
369 mySettings->personColorer.fill(*myPersonColorMode);
370 myPersonColorMode->setNumVisible(10);
371 myPersonColorInterpolation =
new FXCheckButton(m102,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
373 myPersonColorSettingFrame =
374 new FXVerticalFrame(frame3, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
376 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
379 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
380 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
381 myPersonNamePanel =
new NamePanel(m103,
this,
"Show person name", mySettings->personName);
383 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
386 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
387 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
388 myPersonSizePanel =
new SizePanel(m104,
this, mySettings->personSize);
393 new FXTabItem(tabbook,
"Containers", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
394 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
395 FXVerticalFrame* frame3 =
396 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
399 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
400 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
401 new FXLabel(m101,
"Show As", 0, LAYOUT_CENTER_Y);
402 myContainerShapeDetail =
new FXComboBox(m101, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
403 myContainerShapeDetail->appendItem(
"'triangles'");
404 myContainerShapeDetail->appendItem(
"'boxes'");
405 myContainerShapeDetail->appendItem(
"'simple shapes'");
406 myContainerShapeDetail->appendItem(
"'raster images'");
407 myContainerShapeDetail->setNumVisible(4);
408 myContainerShapeDetail->setCurrentItem(settings->containerQuality);
410 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
413 new FXMatrix(frame3, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
414 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
415 new FXLabel(m102,
"Color", 0, LAYOUT_CENTER_Y);
416 myContainerColorMode =
new FXComboBox(m102, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
417 mySettings->containerColorer.fill(*myContainerColorMode);
418 myContainerColorMode->setNumVisible(9);
419 myContainerColorInterpolation =
new FXCheckButton(m102,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
421 myContainerColorSettingFrame =
422 new FXVerticalFrame(frame3, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
424 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
427 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
428 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
429 myContainerNamePanel =
new NamePanel(m103,
this,
"Show container name", mySettings->containerName);
431 new FXHorizontalSeparator(frame3, SEPARATOR_GROOVE | LAYOUT_FILL_X);
434 new FXMatrix(frame3, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
435 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
436 myContainerSizePanel =
new SizePanel(m104,
this, mySettings->containerSize);
440 new FXTabItem(tabbook,
"Junctions", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
441 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
442 FXVerticalFrame* frame4 =
443 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
445 new FXMatrix(frame4, 3, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
446 0, 0, 0, 0, 10, 10, 10, 2, 5, 5);
447 new FXLabel(m41,
"Color", 0, LAYOUT_CENTER_Y);
448 myJunctionColorMode =
new FXComboBox(m41, 20,
this,
MID_SIMPLE_VIEW_COLORCHANGE, FRAME_SUNKEN | LAYOUT_LEFT | LAYOUT_TOP | COMBOBOX_STATIC);
449 mySettings->junctionColorer.fill(*myJunctionColorMode);
450 myJunctionColorMode->setNumVisible(3);
451 myJunctionColorInterpolation =
new FXCheckButton(m41,
"Interpolate",
this,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
453 myJunctionColorSettingFrame =
454 new FXVerticalFrame(frame4, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 2, 8, 5, 2);
456 new FXHorizontalSeparator(frame4, SEPARATOR_GROOVE | LAYOUT_FILL_X);
458 new FXMatrix(frame4, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
459 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
460 myTLIndexPanel =
new NamePanel(m42,
this,
"Show link tls index", mySettings->drawLinkTLIndex);
461 myJunctionIndexPanel =
new NamePanel(m42,
this,
"Show link junction index", mySettings->drawLinkJunctionIndex);
463 myShowLane2Lane->setCheck(mySettings->showLane2Lane);
464 new FXLabel(m42,
" ", 0, LAYOUT_CENTER_Y);
465 myJunctionNamePanel =
new NamePanel(m42,
this,
"Show junction name", mySettings->junctionName);
466 myInternalJunctionNamePanel =
new NamePanel(m42,
this,
"Show internal junction name", mySettings->internalJunctionName);
467 myInternalEdgeNamePanel =
new NamePanel(m42,
this,
"Show internal edge name", mySettings->internalEdgeName);
468 myCwaEdgeNamePanel =
new NamePanel(m42,
this,
"Show crossing and walkingarea name", mySettings->cwaEdgeName);
470 myDrawJunctionShape->setCheck(mySettings->drawJunctionShape);
472 myDrawCrossingsAndWalkingAreas->setCheck(mySettings->drawCrossingsAndWalkingareas);
474 new FXHorizontalSeparator(frame4, SEPARATOR_GROOVE | LAYOUT_FILL_X);
477 new FXMatrix(frame4, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
478 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
479 myJunctionSizePanel =
new SizePanel(m43,
this, mySettings->junctionSize);
482 new FXTabItem(tabbook,
"Detectors/Trigger", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
483 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
484 FXVerticalFrame* frame5 =
485 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
488 new FXMatrix(frame5, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
489 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
490 myAddNamePanel =
new NamePanel(m51,
this,
"Show detector name", mySettings->addName);
491 new FXHorizontalSeparator(frame5 , SEPARATOR_GROOVE | LAYOUT_FILL_X);
494 new FXMatrix(frame5, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
495 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
496 myAddSizePanel =
new SizePanel(m52,
this, mySettings->addSize);
507 new FXTabItem(tabbook,
"POIs", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
508 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
509 FXVerticalFrame* frame6 =
510 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
513 new FXMatrix(frame6, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
514 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
515 myPOINamePanel =
new NamePanel(m61,
this,
"Show poi names", mySettings->poiName);
516 myPOITypePanel =
new NamePanel(m61,
this,
"Show poi types", mySettings->poiType);
517 new FXHorizontalSeparator(frame6 , SEPARATOR_GROOVE | LAYOUT_FILL_X);
520 new FXMatrix(frame6, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
521 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
522 myPOISizePanel =
new SizePanel(m62,
this, mySettings->poiSize);
526 new FXTabItem(tabbook,
"Polygons", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
527 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
528 FXVerticalFrame* frame9 =
529 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
532 new FXMatrix(frame9, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
533 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
534 myPolyNamePanel =
new NamePanel(m91,
this,
"Show polygon names", mySettings->polyName);
535 myPolyTypePanel =
new NamePanel(m91,
this,
"Show polygon types", mySettings->polyType);
536 new FXHorizontalSeparator(frame9 , SEPARATOR_GROOVE | LAYOUT_FILL_X);
538 myPolySizePanel =
new SizePanel(m91,
this, mySettings->polySize);
542 new FXTabItem(tabbook,
"Legend", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
543 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
544 FXVerticalFrame* frame7 =
545 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
548 new FXMatrix(frame7, 2, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
549 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
551 myShowSizeLegend->setCheck(mySettings->showSizeLegend);
552 new FXLabel(m72,
"");
555 new FXTabItem(tabbook,
"openGL", NULL, TAB_LEFT_NORMAL, 0, 0, 0, 0, 4, 8, 4, 4);
556 FXScrollWindow* genScroll =
new FXScrollWindow(tabbook);
557 FXVerticalFrame* frame8 =
558 new FXVerticalFrame(genScroll, FRAME_THICK | FRAME_RAISED | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
561 new FXMatrix(frame8, 1, LAYOUT_FILL_X | LAYOUT_TOP | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
562 0, 0, 0, 0, 10, 10, 10, 10, 5, 5);
564 myAntialiase->setCheck(mySettings->antialiase);
566 myDither->setCheck(mySettings->dither);
568 FXHorizontalFrame* f2 =
new FXHorizontalFrame(contentFrame, LAYOUT_TOP | LAYOUT_LEFT | LAYOUT_FILL_X | PACK_UNIFORM_WIDTH, 0, 0, 0, 0, 10, 10, 5, 5);
569 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);
570 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);
573 rebuildColorMatrices(
false);
576 const FXint minSize = 400;
577 setX(
MIN2(getApp()->reg().readIntEntry(
"VIEWSETTINGS",
"x", 150), getApp()->getRootWindow()->getWidth() - minSize));
578 setY(
MIN2(getApp()->reg().readIntEntry(
"VIEWSETTINGS",
"y", 150), getApp()->getRootWindow()->getHeight() - minSize));
579 setWidth(
MAX2(getApp()->reg().readIntEntry(
"VIEWSETTINGS",
"width", 700), minSize));
580 setHeight(
MAX2(getApp()->reg().readIntEntry(
"VIEWSETTINGS",
"height", 500), minSize));
639 FXString dataS = (
char*) data;
642 for (
int i = 0; i <
mySchemeName->getNumItems() - 1; ++i) {
725 std::vector<FXColorWell*>::const_iterator colEnd,
726 std::vector<FXRealSpinDial*>::const_iterator threshIt,
727 std::vector<FXRealSpinDial*>::const_iterator threshEnd,
728 std::vector<FXButton*>::const_iterator buttonIt,
731 while (colIt != colEnd) {
733 if (sender == *colIt) {
737 if (sender == *threshIt) {
738 const SUMOReal val = (*threshIt)->getValue();
742 (*threshIt)->getRange(lo, hi);
743 (*threshIt)->setRange(lo, val);
747 if (threshIt != threshEnd) {
748 (*threshIt)->getRange(lo, hi);
749 (*threshIt)->setRange(val, hi);
754 if (sender == *colIt) {
758 if (sender == *buttonIt) {
778 std::vector<FXRealSpinDial*>::const_iterator scaleEnd,
779 std::vector<FXRealSpinDial*>::const_iterator threshIt,
780 std::vector<FXRealSpinDial*>::const_iterator threshEnd,
781 std::vector<FXButton*>::const_iterator buttonIt,
784 while (scaleIt != scaleEnd) {
786 if (sender == *scaleIt) {
787 scheme.
setColor(pos, (*scaleIt)->getValue());
790 if (sender == *threshIt) {
791 const SUMOReal val = (*threshIt)->getValue();
795 (*threshIt)->getRange(lo, hi);
796 (*threshIt)->setRange(lo, val);
800 if (threshIt != threshEnd) {
801 (*threshIt)->getRange(lo, hi);
802 (*threshIt)->setRange(val, hi);
807 if (sender == *scaleIt) {
808 scheme.
setColor(pos, (*scaleIt)->getValue());
811 if (sender == *buttonIt) {
813 scheme.
addColor((*scaleIt)->getValue(), (*threshIt)->getValue());
838 bool doRebuildColorMatrices =
false;
917 doRebuildColorMatrices =
true;
921 doRebuildColorMatrices =
true;
924 doRebuildColorMatrices =
true;
931 doRebuildColorMatrices =
true;
935 doRebuildColorMatrices =
true;
938 doRebuildColorMatrices =
true;
945 doRebuildColorMatrices =
true;
949 doRebuildColorMatrices =
true;
952 doRebuildColorMatrices =
true;
959 doRebuildColorMatrices =
true;
963 doRebuildColorMatrices =
true;
966 doRebuildColorMatrices =
true;
973 doRebuildColorMatrices =
true;
977 doRebuildColorMatrices =
true;
980 doRebuildColorMatrices =
true;
987 doRebuildColorMatrices =
true;
991 doRebuildColorMatrices =
true;
994 doRebuildColorMatrices =
true;
1024 if (doRebuildColorMatrices) {
1028 getApp()->forceRefresh();
1037 if (settingsName !=
"") {
1038 FXint index =
mySchemeName->appendItem(settingsName.c_str());
1059 std::vector<GUISUMOAbstractView::Decal>::iterator j;
1099 std::string name =
"";
1100 while (name.length() == 0) {
1101 FXDialogBox dialog(
this,
"Enter a name", DECOR_TITLE | DECOR_BORDER);
1102 FXVerticalFrame* content =
new FXVerticalFrame(&dialog, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10);
1103 new FXLabel(content,
"Please enter an alphanumeric name: ", NULL, LAYOUT_FILL_X | JUSTIFY_LEFT);
1104 FXTextField* text =
new FXTextField(content, 40, &dialog, FXDialogBox::ID_ACCEPT, TEXTFIELD_ENTER_ONLY | FRAME_SUNKEN | FRAME_THICK | LAYOUT_FILL_X);
1105 new FXHorizontalSeparator(content, SEPARATOR_GROOVE | LAYOUT_FILL_X);
1106 FXHorizontalFrame* buttons =
new FXHorizontalFrame(content, LAYOUT_FILL_X | PACK_UNIFORM_WIDTH, 0, 0, 0, 0, 0, 0, 0, 0);
1107 new FXButton(buttons,
"&OK", NULL, &dialog, FXDialogBox::ID_ACCEPT, BUTTON_INITIAL | BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_RIGHT);
1108 new FXButton(buttons,
"&Cancel", NULL, &dialog, FXDialogBox::ID_CANCEL, BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_RIGHT, 0, 0, 0, 0, 20, 20);
1111 if (!dialog.execute()) {
1114 name = text->getText().text();
1115 for (
int i = 0; i < (int)name.length(); ++i) {
1116 if (name[i] !=
'_' && (name[i] <
'a' || name[i] >
'z') && (name[i] <
'A' || name[i] >
'Z') && (name[i] <
'0' || name[i] >
'9')) {
1124 tmpSettings.
name = name;
1138 sender->handle(
this,
1140 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1152 std::string name =
mySchemeName->getItem(index).text();
1163 sender->handle(
this,
1165 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1195 FXMessageBox::error(
this, MBOX_OK,
"Storing failed!",
"%s", e.what());
1203 sender->handle(
this,
1206 FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1214 FXFileDialog opendialog(
this,
"Import view settings");
1216 opendialog.setSelectMode(SELECTFILE_ANY);
1217 opendialog.setPatternList(
"*.xml");
1221 if (opendialog.execute()) {
1231 FXFileDialog opendialog(
this,
"Load Decals");
1233 opendialog.setSelectMode(SELECTFILE_ANY);
1234 opendialog.setPatternList(
"*.xml");
1238 if (opendialog.execute()) {
1259 FXMessageBox::error(
myParent, MBOX_OK,
"Storing failed!",
"%s", e.what());
1269 sender->handle(
this, FXSEL(SEL_COMMAND, ID_ENABLE), ptr);
1278 const int numRows =
MAX2((
int)10, (
int)
myDecals->size() + 1);
1288 header->setHeight(getApp()->getNormalFont()->getFontHeight() + getApp()->getNormalFont()->getFontAscent());
1290 for (k = 0; k < 7; k++) {
1291 header->setItemJustify(k, JUSTIFY_CENTER_X | JUSTIFY_TOP);
1292 header->setItemSize(k, 60);
1294 header->setItemSize(0, 150);
1297 std::vector<GUISUMOAbstractView::Decal>::iterator j;
1310 for (k = 0; k < 7; k++) {
1318 std::vector<FXColorWell*>& colors,
1319 std::vector<FXRealSpinDial*>& thresholds,
1320 std::vector<FXButton*>& buttons,
1321 FXCheckButton* interpolation,
1324 FXMatrix* m =
new FXMatrix(frame, 3,
1325 LAYOUT_FILL_X | MATRIX_BY_COLUMNS,
1326 0, 0, 0, 0, 10, 10, 0, 0, 5, 3);
1330 const bool fixed = scheme.
isFixed();
1331 std::vector<RGBColor>::const_iterator colIt = scheme.
getColors().begin();
1332 std::vector<SUMOReal>::const_iterator threshIt = scheme.
getThresholds().begin();
1333 std::vector<std::string>::const_iterator nameIt = scheme.
getNames().begin();
1334 FX::FXString buttonText =
"Add";
1335 while (colIt != scheme.
getColors().end()) {
1338 LAYOUT_FIX_WIDTH | LAYOUT_CENTER_Y | FRAME_SUNKEN | FRAME_THICK | ICON_AFTER_TEXT,
1339 0, 0, 100, 0, 0, 0, 0, 0));
1341 new FXLabel(m, nameIt->c_str());
1346 threshDialer->setValue(*threshIt);
1347 thresholds.push_back(threshDialer);
1348 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));
1349 buttonText =
"Remove";
1357 interpolation->disable();
1359 if (colors.size() > 1) {
1360 interpolation->enable();
1361 if (interpolation->getCheck() != FALSE) {
1362 thresholds.front()->enable();
1364 thresholds.front()->disable();
1367 interpolation->disable();
1368 thresholds.front()->disable();
1377 std::vector<FXRealSpinDial*>& scales,
1378 std::vector<FXRealSpinDial*>& thresholds,
1379 std::vector<FXButton*>& buttons,
1380 FXCheckButton* interpolation,
1383 FXMatrix* m =
new FXMatrix(frame, 3,
1384 LAYOUT_FILL_X | MATRIX_BY_COLUMNS,
1385 0, 0, 0, 0, 10, 10, 0, 0, 5, 3);
1389 const bool fixed = scheme.
isFixed();
1390 std::vector<SUMOReal>::const_iterator scaleIt = scheme.
getColors().begin();
1391 std::vector<SUMOReal>::const_iterator threshIt = scheme.
getThresholds().begin();
1392 std::vector<std::string>::const_iterator nameIt = scheme.
getNames().begin();
1393 FX::FXString buttonText =
"Add";
1394 while (scaleIt != scheme.
getColors().end()) {
1396 scaleDialer->setValue(*scaleIt);
1397 scales.push_back(scaleDialer);
1399 new FXLabel(m, nameIt->c_str());
1404 threshDialer->setValue(*threshIt);
1405 thresholds.push_back(threshDialer);
1406 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));
1407 buttonText =
"Remove";
1415 interpolation->disable();
1417 if (scales.size() > 1) {
1418 interpolation->enable();
1419 if (interpolation->getCheck() != FALSE) {
1420 thresholds.front()->enable();
1422 thresholds.front()->disable();
1425 interpolation->disable();
1426 thresholds.front()->disable();
1438 LAYOUT_FILL_Y | LAYOUT_FIX_WIDTH, 0, 0, 470, 0);
1444 for (
int i = 1; i <= 5; ++i) {
1494 std::string value = i->
item->getText().text();
1496 if (value.find_first_not_of(
" ") == std::string::npos) {
1502 if (row == static_cast<int>(
myDecals->size())) {
1514 }
else if (row > static_cast<int>(
myDecals->size())) {
1518 d = (*myDecals)[row];
1532 std::string msg =
"The value must be a float, is:" + value;
1533 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1540 std::string msg =
"The value must be a float, is:" + value;
1541 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1548 std::string msg =
"The value must be a float, is:" + value;
1549 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1556 std::string msg =
"The value must be a float, is:" + value;
1557 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1564 std::string msg =
"The value must be a float, is:" + value;
1565 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1572 std::string msg =
"The value must be a float, is:" + value;
1573 FXMessageBox::error(
this, MBOX_OK,
"Number format error",
"%s", msg.c_str());
1579 (*myDecals)[row] = d;
1599 for (
int i = 0; i <
mySchemeName->getNumItems(); ++i) {
1611 const std::string& title,
1614 myCheck->setCheck(settings.
show);
1615 new FXLabel(parent,
"");
1616 FXMatrix* m1 =
new FXMatrix(parent, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
1617 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
1618 new FXLabel(m1,
"Size", 0, LAYOUT_CENTER_Y);
1619 mySizeDial =
new FXRealSpinDial(m1, 10, target, MID_SIMPLE_VIEW_COLORCHANGE,
1620 LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
1621 mySizeDial->setRange(10, 1000);
1622 mySizeDial->setValue(settings.
size);
1623 FXMatrix* m2 =
new FXMatrix(parent, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
1624 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
1625 new FXLabel(m2,
"Color", 0, LAYOUT_CENTER_Y);
1627 target, MID_SIMPLE_VIEW_COLORCHANGE,
1628 LAYOUT_FIX_WIDTH | LAYOUT_CENTER_Y | LAYOUT_SIDE_TOP | FRAME_SUNKEN | FRAME_THICK | ICON_AFTER_TEXT,
1629 0, 0, 100, 0, 0, 0, 0, 0);
1642 myCheck->setCheck(settings.
show);
1643 mySizeDial->setValue(settings.
size);
1652 myCheck =
new FXCheckButton(parent,
"Draw with constant size when zoomed out", target,
MID_SIMPLE_VIEW_COLORCHANGE, LAYOUT_CENTER_Y | CHECKBUTTON_NORMAL);
1654 new FXLabel(parent,
"");
1655 FXMatrix* m1 =
new FXMatrix(parent, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
1656 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
1657 new FXLabel(m1,
"Minimum Size", 0, LAYOUT_CENTER_Y);
1659 LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
1660 myMinSizeDial->setValue(settings.
minSize);
1661 FXMatrix* m2 =
new FXMatrix(parent, 2, LAYOUT_FILL_X | LAYOUT_BOTTOM | LAYOUT_LEFT | MATRIX_BY_COLUMNS,
1662 0, 0, 0, 0, 10, 10, 0, 0, 5, 5);
1663 new FXLabel(m2,
"Exaggerate by", 0, LAYOUT_CENTER_Y);
1665 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
1666 myExaggerateDial->setRange(0, 10000);
1674 myMinSizeDial->getValue(), myExaggerateDial->getValue(), myCheck->getCheck() != FALSE);
1681 myMinSizeDial->setValue(settings.
minSize);
1688 getApp()->reg().writeIntEntry(
"VIEWSETTINGS",
"x", getX());
1689 getApp()->reg().writeIntEntry(
"VIEWSETTINGS",
"y", getY());
1690 getApp()->reg().writeIntEntry(
"VIEWSETTINGS",
"width", getWidth());
1691 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
float laneWidthExaggeration
The lane exaggeration (upscale thickness)
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
GUIColorScheme & getLaneEdgeScheme()
Returns the current lane (edge) coloring schme.
bool showBTRange
Information whether the communication range shall be drawn.
GUIColorer laneColorer
The lane colorer.
GUIColorer containerColorer
The container colorer.
Stores the information about how to visualize structures.
The dialog to change the view (gui) settings.
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
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
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.
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.
float laneMinSize
The minimum visual lane width for drawing.
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
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
float minSize
The minimum size to draw this object.
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
float exaggeration
The size exaggeration (upscale)
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
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
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