Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
GUIDialog_ViewSettings.cpp
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
22// The dialog to change the view (gui) settings.
23/****************************************************************************/
24#include <config.h>
25
26#include <fstream>
27#include <fxkeys.h>
45
48
49
50// ===========================================================================
51// FOX callback mapping
52// ===========================================================================
53
58
59FXDEFMAP(GUIDialog_ViewSettings) GUIDialog_ViewSettingsMap[] = {
63 FXMAPFUNC(SEL_COMMAND, MID_SETTINGS_OK, GUIDialog_ViewSettings::onCmdOk),
65 FXMAPFUNC(SEL_KEYPRESS, 0, GUIDialog_ViewSettings::onKeyPress),
66 // settings
75 // decals
80};
81
82FXIMPLEMENT(GUIDialog_ViewSettings, FXTopWindow, GUIDialog_ViewSettingsMap, ARRAYNUMBER(GUIDialog_ViewSettingsMap))
83FXIMPLEMENT(GUIDialog_ViewSettings::SizePanel, FXObject, GUIDialog_SizeMap, ARRAYNUMBER(GUIDialog_SizeMap))
84
85
86// ===========================================================================
87// method definitions
88// ===========================================================================
89#ifdef _MSC_VER
90#pragma warning(push)
91#pragma warning(disable: 4355) // mask warning about "this" in initializers
92#endif
94 FXTopWindow(parent, TL("View Settings"),
98 GUIPersistentWindowPos(this, "VIEWSETTINGS", true, 20, 40, 700, 500, 400, 20),
99 myParent(parent),
100 mySettings(settings),
101 myBackup(settings->name, settings->netedit) {
102 // make a backup copy
103 myBackup.copy(*settings);
104 // create content frame
105 FXVerticalFrame* contentFrame = new FXVerticalFrame(this, GUIDesignViewSettingsVerticalFrame1);
106 // build header
107 buildHeader(contentFrame);
108 // create tabbook for every section
109 FXTabBook* tabbook = new FXTabBook(contentFrame, nullptr, 0, GUIDesignViewSettingsTabBook1);
110 // build background frame
111 buildBackgroundFrame(tabbook);
112 // build streets frame
113 buildStreetsFrame(tabbook);
114 // build vehicles frame
115 buildVehiclesFrame(tabbook);
116 // build persons frame
117 buildPersonsFrame(tabbook);
118 // build containers frame
119 buildContainersFrame(tabbook);
120 // build junctions frame
121 buildJunctionsFrame(tabbook);
122 // build additionals frame
123 buildAdditionalsFrame(tabbook);
124 // build demand frame
125 if (mySettings->netedit) {
126 buildDemandFrame(tabbook);
127 }
128 // build POIs frame
129 buildPOIsFrame(tabbook);
130 // build polygons frame
131 buildPolygonsFrame(tabbook);
132 // build selection frame (only in netedit)
133 if (mySettings->netedit) {
134 buildSelectionFrame(tabbook);
135 }
136 // build data frame (only in netedit)
137 if (mySettings->netedit) {
138 buildDataFrame(tabbook);
139 }
140 // build legend frame
141 buildLegendFrame(tabbook);
142 // build 3D frame
143 build3DFrame(tabbook);
144 if (mySettings->netedit) {
145 myFrame3D->disable();
146 }
147 // build openGL frame
148 buildOpenGLFrame(tabbook);
149 // build buttons
150 buildButtons(contentFrame);
151 // rebuild color matrix
155}
156#ifdef _MSC_VER
157#pragma warning(pop)
158#endif
159
160
162 myParent->remove(this);
163 // delete name panels
167 delete myTLSPhaseNamePanel;
168 delete myCwaEdgeNamePanel;
169 delete myStreetNamePanel;
170 delete myEdgeValuePanel;
173 delete myTLIndexPanel;
174 delete myJunctionIDPanel;
175 delete myJunctionNamePanel;
176 delete myVehicleNamePanel;
177 delete myVehicleValuePanel;
179 delete myVehicleTextPanel;
180 delete myPersonNamePanel;
181 delete myPersonValuePanel;
182 delete myAddNamePanel;
183 delete myAddFullNamePanel;
184 delete myPOINamePanel;
185 delete myPOITypePanel;
186 delete myPOITextPanel;
187 delete myPolyNamePanel;
188 delete myPolyTypePanel;
189 delete myEdgeNamePanel;
190 delete myDataValuePanel;
192 // delete size panels
193 delete myVehicleSizePanel;
194 delete myPersonSizePanel;
195 delete myJunctionSizePanel;
196 delete myPOISizePanel;
197 delete myPolySizePanel;
198 delete myAddSizePanel;
199 // delete rainbow panels
200 delete myEdgeRainbowPanel;
202 delete myDataRainbowPanel;
204}
205
206
207void
209 // update buttons that can be changed externally
210 myShowGrid->setCheck(mySettings->showGrid);
213 // create myNewDecalsTable
214 myDecalsTable->create();
216 FXTopWindow::show();
217}
218
219
224
225
226void
228 mySettings = settings;
229 myBackup.copy(*settings);
230 onCmdNameChange(nullptr, 0, nullptr);
231}
232
233
234long
235GUIDialog_ViewSettings::onCmdOk(FXObject*, FXSelector, void*) {
236 getApp()->reg().writeIntEntry("SETTINGS", "comboRows", (int)myComboRows->getValue());
237 getApp()->reg().writeRealEntry("SETTINGS", "uiscale", myUIScale->getValue());
238 hide();
239 return 1;
240}
241
242
243long
244GUIDialog_ViewSettings::onCmdCancel(FXObject*, FXSelector, void*) {
245 hide();
247 myParent->update();
248 return 1;
249}
250
251
252long
253GUIDialog_ViewSettings::onKeyPress(FXObject* o, FXSelector sel, void* ptr) {
254 const FXEvent* e = (FXEvent*) ptr;
255 if(e->code==KEY_Escape){
256 onCmdCancel(nullptr, 0, nullptr);
257 return 1;
258 }
259 return FXTopWindow::onKeyPress(o, sel, ptr);
260}
261
262
263long
264GUIDialog_ViewSettings::onCmdNameChange(FXObject*, FXSelector, void* ptr) {
265 if (ptr != nullptr) {
266 FXString dataS = (char*) ptr; // !!!unicode
267 // check whether this item has been added twice
268 if (dataS.text() == mySchemeName->getItemText(mySchemeName->getNumItems() - 1)) {
269 for (int i = 0; i < mySchemeName->getNumItems() - 1; ++i) {
270 if (dataS.text() == mySchemeName->getItemText(i)) {
272 }
273 }
274 }
275 myBackup.copy(gSchemeStorage.get(dataS.text()));
276 mySettings = &gSchemeStorage.get(dataS.text());
277 }
279
288 if (mySettings->netedit) {
299
306
319
326 }
327
335 myShowRails->setCheck(mySettings->showRails);
351
364 /*
365 myShowLaneChangePreference->setCheck(mySettings->drawLaneChangePreference);
366 */
373
379
384
395
399
400 myPoiDetail->setValue(mySettings->poiDetail);
407
413
417 myDither->setCheck(mySettings->dither);
418 myFPS->setCheck(mySettings->fps);
419 myTrueZ->setCheck(mySettings->trueZ);
427
430
433
434 update();
435 myParent->update();
436 return 1;
437}
438
439
440bool
441GUIDialog_ViewSettings::updateColorRanges(FXObject* sender, std::vector<FXColorWell*>::const_iterator colIt,
442 std::vector<FXColorWell*>::const_iterator colEnd,
443 std::vector<FXRealSpinner*>::const_iterator threshIt,
444 std::vector<FXRealSpinner*>::const_iterator threshEnd,
445 std::vector<FXButton*>::const_iterator buttonIt,
446 GUIColorScheme& scheme) {
447 UNUSED_PARAMETER(threshEnd);
448 int pos = 0;
449 while (colIt != colEnd) {
450 if (scheme.isFixed()) {
451 if (sender == *colIt) {
452 scheme.setColor(pos, MFXUtils::getRGBColor((*colIt)->getRGBA()));
453 }
454 } else {
455 if (sender == *threshIt) {
456 const double val = (*threshIt)->getValue();
457 scheme.setThreshold(pos, val);
458 return false;
459 }
460 if (sender == *colIt) {
461 scheme.setColor(pos, MFXUtils::getRGBColor((*colIt)->getRGBA()));
462 return false;
463 }
464 if (sender == *buttonIt) {
465 scheme.addColor(MFXUtils::getRGBColor((*colIt)->getRGBA()), (*threshIt)->getValue());
466 return true;
467 } else if (sender == *(buttonIt + 1)) {
468 scheme.removeColor(pos);
469 return true;
470 }
471 // 2 buttons per item (add / remove)
472 threshIt++;
473 buttonIt += 2;
474 }
475 ++colIt;
476 pos++;
477 }
478 return false;
479}
480
481
482bool
483GUIDialog_ViewSettings::updateScaleRanges(FXObject* sender, std::vector<FXRealSpinner*>::const_iterator scaleIt,
484 std::vector<FXRealSpinner*>::const_iterator scaleEnd,
485 std::vector<FXRealSpinner*>::const_iterator threshIt,
486 std::vector<FXRealSpinner*>::const_iterator threshEnd,
487 std::vector<FXButton*>::const_iterator buttonIt,
488 GUIScaleScheme& scheme) {
489 int pos = 0;
490 while (scaleIt != scaleEnd) {
491 if (scheme.isFixed()) {
492 if (sender == *scaleIt) {
493 scheme.setColor(pos, (*scaleIt)->getValue());
494 }
495 } else {
496 if (sender == *threshIt) {
497 const double val = (*threshIt)->getValue();
498 double lo, hi;
499 if (pos != 0) {
500 threshIt--;
501 (*threshIt)->getRange(lo, hi);
502 (*threshIt)->setRange(lo, val);
503 threshIt++;
504 }
505 threshIt++;
506 if (threshIt != threshEnd) {
507 (*threshIt)->getRange(lo, hi);
508 (*threshIt)->setRange(val, hi);
509 }
510 scheme.setThreshold(pos, val);
511 return false;
512 }
513 if (sender == *scaleIt) {
514 scheme.setColor(pos, (*scaleIt)->getValue());
515 return false;
516 }
517 if (sender == *buttonIt) {
518 scheme.addColor((*scaleIt)->getValue(), (*threshIt)->getValue());
519 return true;
520 } else if (sender == *(buttonIt + 1)) {
521 scheme.removeColor(pos);
522 return true;
523 }
524 threshIt++;
525 buttonIt += 2;
526 }
527 ++scaleIt;
528 pos++;
529 }
530 return false;
531}
532
533
534long
535GUIDialog_ViewSettings::onCmdColorChange(FXObject* sender, FXSelector, void* /*val*/) {
537 tmpSettings.copy(*mySettings);
538 int prevLaneMode = mySettings->getLaneEdgeMode();
539 int prevLaneScaleMode = mySettings->getLaneEdgeScaleMode();
540 int prevVehicleMode = mySettings->vehicleColorer.getActive();
541 int prevVehicleScaleMode = mySettings->vehicleScaler.getActive();
542 int prevPersonMode = mySettings->personColorer.getActive();
543 int prevContainerMode = mySettings->containerColorer.getActive();
544 int prevJunctionMode = mySettings->junctionColorer.getActive();
545 int prevPOIMode = mySettings->poiColorer.getActive();
546 int prevPolyMode = mySettings->polyColorer.getActive();
547 int prevDataMode = mySettings->dataColorer.getActive();
548 int prevDataScaleMode = mySettings->dataScaler.getActive();
549 bool doRebuildColorMatrices = false;
550
551 tmpSettings.name = mySettings->name;
553
554 // additionals
563 if (mySettings->netedit) {
574
575 tmpSettings.widthSettings.tripWidth = myTripWidth->getValue();
576 tmpSettings.widthSettings.personTripWidth = myPersonTripWidth->getValue();
577 tmpSettings.widthSettings.walkWidth = myWalkWidth->getValue();
578 tmpSettings.widthSettings.rideWidth = myRideWidth->getValue();
579 tmpSettings.widthSettings.transportWidth = myTransportWidth->getValue();
580 tmpSettings.widthSettings.transhipWidth = myTranshipWidth->getValue();
581
594 }
595
596 tmpSettings.showGrid = (myShowGrid->getCheck() != FALSE);
597 tmpSettings.gridXSize = (double) myGridXSizeDialer->getValue();
598 tmpSettings.gridYSize = (double) myGridYSizeDialer->getValue();
599
603 } else {
606 }
607 tmpSettings.laneShowBorders = (myShowLaneBorders->getCheck() != FALSE);
608 tmpSettings.showBikeMarkings = (myShowBikeMarkings->getCheck() != FALSE);
609 tmpSettings.showLinkDecals = (myShowLaneDecals->getCheck() != FALSE);
610 tmpSettings.realisticLinkRules = (myRealisticLinkRules->getCheck() != FALSE);
611 tmpSettings.showLinkRules = (myShowLinkRules->getCheck() != FALSE);
612 tmpSettings.showRails = (myShowRails->getCheck() != FALSE);
613 tmpSettings.secondaryShape = (mySecondaryShape->getCheck() != FALSE);
614 tmpSettings.edgeName = myEdgeNamePanel->getSettings();
618 tmpSettings.edgeValue = myEdgeValuePanel->getSettings();
620 tmpSettings.hideConnectors = (myHideMacroConnectors->getCheck() != FALSE);
621 tmpSettings.showLaneDirection = (myShowLaneDirection->getCheck() != FALSE);
622 tmpSettings.showSublanes = (myShowSublanes->getCheck() != FALSE);
623 tmpSettings.spreadSuperposed = (mySpreadSuperposed->getCheck() != FALSE);
624 tmpSettings.disableHideByZoom = (myDisableHideByZoom->getCheck() != FALSE);
625 if (sender == myParamKey) {
627 tmpSettings.edgeParam = myParamKey->getText().text();
629 tmpSettings.laneParam = myParamKey->getText().text();
631 tmpSettings.edgeData = myParamKey->getText().text();
633 tmpSettings.edgeData = myParamKey->getText().text();
634 }
635 } else if (sender == myScalingParamKey) {
637 tmpSettings.edgeDataScaling = myScalingParamKey->getText().text();
638 }
639 } else if (sender == myVehicleParamKey) {
641 tmpSettings.vehicleParam = myVehicleParamKey->getText().text();
642 }
643 } else if (sender == myVehicleScalingParamKey) {
645 tmpSettings.vehicleScaleParam = myVehicleScalingParamKey->getText().text();
646 }
647 } else if (sender == myDataParamKey) {
649 tmpSettings.relDataAttr = myDataParamKey->getText().text();
650 }
651 } else if (sender == myDataScaleParamKey) {
653 tmpSettings.relDataScaleAttr = myDataScaleParamKey->getText().text();
654 }
655 } else if (sender == myVehicleTextPanel->myCheck) {
657 } else if (sender == myVehicleTextParamKey) {
658 tmpSettings.vehicleTextParam = myVehicleTextParamKey->getText().text();
659 } else if (sender == myPOITextPanel->myCheck) {
661 } else if (sender == myPOITextParamKey) {
662 tmpSettings.poiTextParam = myPOITextParamKey->getText().text();
663 } else if (sender == myMeanDataID) {
664 tmpSettings.edgeDataID = myMeanDataID->getText().text();
665 }
667 tmpSettings.laneWidthExaggeration = myLaneWidthUpscaleDialer->getValue();
668 tmpSettings.laneMinSize = myLaneMinWidthDialer->getValue();
669
673 tmpSettings.showBlinker = (myShowBlinker->getCheck() != FALSE);
674 tmpSettings.drawMinGap = (myShowMinGap->getCheck() != FALSE);
675 tmpSettings.drawBrakeGap = (myShowBrakeGap->getCheck() != FALSE);
676 tmpSettings.showBTRange = (myShowBTRange->getCheck() != FALSE);
677 tmpSettings.showRouteIndex = (myShowRouteIndex->getCheck() != FALSE);
678 tmpSettings.scaleLength = (myScaleLength->getCheck() != FALSE);
679 tmpSettings.drawReversed = (myDrawReversed->getCheck() != FALSE);
680 tmpSettings.showParkingInfo = (myShowParkingInfo->getCheck() != FALSE);
681 tmpSettings.showChargingInfo = (myShowChargingInfo->getCheck() != FALSE);
682 /*
683 tmpSettings.drawLaneChangePreference = (myShowLaneChangePreference->getCheck() != FALSE);
684 */
691
697
702
713
714 tmpSettings.addName = myAddNamePanel->getSettings();
716 tmpSettings.addSize = myAddSizePanel->getSettings();
717
719 tmpSettings.poiDetail = myPoiDetail->getValue();
720 tmpSettings.poiName = myPOINamePanel->getSettings();
721 tmpSettings.poiType = myPOITypePanel->getSettings();
722 tmpSettings.poiText = myPOITextPanel->getSettings();
723 tmpSettings.poiSize = myPOISizePanel->getSettings();
724 tmpSettings.poiUseCustomLayer = myPOIUseCustomLayer->getCheck() != FALSE;
725 tmpSettings.poiCustomLayer = myPOICustomLayer->getValue();
726
728 tmpSettings.polyName = myPolyNamePanel->getSettings();
729 tmpSettings.polyType = myPolyTypePanel->getSettings();
730 tmpSettings.polySize = myPolySizePanel->getSettings();
731 tmpSettings.polyUseCustomLayer = myPolyUseCustomLayer->getCheck() != FALSE;
732 tmpSettings.polyCustomLayer = myPolyCustomLayer->getValue();
733
734 if (mySettings->netedit) {
735 tmpSettings.dataValue = myDataValuePanel->getSettings();
738 tmpSettings.dataValue = myDataValuePanel->getSettings();
739 tmpSettings.tazRelWidthExaggeration = myTazRelationUpscaleDialer->getValue();
742 }
743
744 tmpSettings.showLane2Lane = (myShowLane2Lane->getCheck() != FALSE);
745 tmpSettings.drawJunctionShape = (myDrawJunctionShape->getCheck() != FALSE);
746 tmpSettings.drawCrossingsAndWalkingareas = (myDrawCrossingsAndWalkingAreas->getCheck() != FALSE);
747 tmpSettings.dither = (myDither->getCheck() != FALSE);
748 tmpSettings.fps = (myFPS->getCheck() != FALSE);
749 tmpSettings.trueZ = (myTrueZ->getCheck() != FALSE);
750 tmpSettings.drawBoundaries = (myDrawBoundaries->getCheck() != FALSE);
751 tmpSettings.forceDrawForRectangleSelection = (myForceDrawForRectangleSelection->getCheck() != FALSE);
752 tmpSettings.disableDottedContours = (myDisableDottedContours->getCheck() != FALSE);
754 tmpSettings.showSizeLegend = (myShowSizeLegend->getCheck() != FALSE);
755 tmpSettings.showColorLegend = (myShowColorLegend->getCheck() != FALSE);
756 tmpSettings.showVehicleColorLegend = (myShowVehicleColorLegend->getCheck() != FALSE);
757 tmpSettings.ignoreColorSchemeFor3DVehicles = (myIgnoreColorSchemeFor3DVehicles->getCheck() != FALSE);
758 tmpSettings.show3DTLSDomes = (myShow3DTLSDomes->getCheck() != FALSE);
759 tmpSettings.show3DTLSLinkMarkers = (myShow3DTLSLinkMarkers->getCheck() != FALSE);
760 tmpSettings.show3DHeadUpDisplay = (myShow3DHeadUpDisplay->getCheck() != FALSE);
761 tmpSettings.generate3DTLSModels = (myGenerate3DTLSModels->getCheck() != FALSE);
762 const unsigned char lightFactor = (unsigned char)myLight3DFactor->getValue();
763 tmpSettings.ambient3DLight.set(lightFactor / 2, lightFactor / 2, lightFactor / 2, 255);
764 tmpSettings.diffuse3DLight.set(lightFactor, lightFactor, lightFactor, 255);
765 tmpSettings.skyColor = MFXUtils::getRGBColor(mySkyColor->getRGBA());
766
767 // lanes (colors)
768 if (sender == myEdgeRainbowPanel->myColorRainbow) {
770 doRebuildColorMatrices = true;
771 } else if (sender == myJunctionRainbowPanel->myColorRainbow) {
773 doRebuildColorMatrices = true;
774 } else if (sender == myVehicleRainbowPanel->myColorRainbow) {
776 doRebuildColorMatrices = true;
777 } else if (myDataRainbowPanel && sender == myDataRainbowPanel->myColorRainbow) {
779 doRebuildColorMatrices = true;
780 }
781 if (tmpSettings.getLaneEdgeMode() == prevLaneMode) {
782 if (updateColorRanges(sender, myLaneColors.begin(), myLaneColors.end(),
783 myLaneThresholds.begin(), myLaneThresholds.end(), myLaneButtons.begin(),
784 tmpSettings.getLaneEdgeScheme())) {
785 doRebuildColorMatrices = true;
786 }
787 if (sender == myLaneColorInterpolation) {
788 tmpSettings.getLaneEdgeScheme().setInterpolated(myLaneColorInterpolation->getCheck() != FALSE);
789 doRebuildColorMatrices = true;
790 }
791 } else {
792 doRebuildColorMatrices = true;
793 }
794 // lanes (scaling)
795 if (tmpSettings.getLaneEdgeScaleMode() == prevLaneScaleMode) {
796 if (updateScaleRanges(sender, myLaneScales.begin(), myLaneScales.end(),
798 tmpSettings.getLaneEdgeScaleScheme())) {
799 doRebuildColorMatrices = true;
800 }
801 if (sender == myLaneScaleInterpolation) {
802 tmpSettings.getLaneEdgeScaleScheme().setInterpolated(myLaneScaleInterpolation->getCheck() != FALSE);
803 doRebuildColorMatrices = true;
804 }
805 } else {
806 doRebuildColorMatrices = true;
807 }
808 // vehicles
809 if (tmpSettings.vehicleColorer.getActive() == prevVehicleMode) {
810 if (updateColorRanges(sender, myVehicleColors.begin(), myVehicleColors.end(),
812 tmpSettings.vehicleColorer.getScheme())) {
813 doRebuildColorMatrices = true;
814 }
815 if (sender == myVehicleColorInterpolation) {
816 tmpSettings.vehicleColorer.getScheme().setInterpolated(myVehicleColorInterpolation->getCheck() != FALSE);
817 doRebuildColorMatrices = true;
818 }
819 } else {
820 doRebuildColorMatrices = true;
821 }
822 // vehicles (scaling)
823 if (tmpSettings.vehicleScaler.getActive() == prevVehicleScaleMode) {
824 if (updateScaleRanges(sender, myVehicleScales.begin(), myVehicleScales.end(),
826 tmpSettings.vehicleScaler.getScheme())) {
827 doRebuildColorMatrices = true;
828 }
829 if (sender == myVehicleScaleInterpolation) {
830 tmpSettings.vehicleScaler.getScheme().setInterpolated(myVehicleScaleInterpolation->getCheck() != FALSE);
831 doRebuildColorMatrices = true;
832 }
833 } else {
834 doRebuildColorMatrices = true;
835 }
836 // persons
837 if (tmpSettings.personColorer.getActive() == prevPersonMode) {
838 if (updateColorRanges(sender, myPersonColors.begin(), myPersonColors.end(),
840 tmpSettings.personColorer.getScheme())) {
841 doRebuildColorMatrices = true;
842 }
843 if (sender == myPersonColorInterpolation) {
844 tmpSettings.personColorer.getScheme().setInterpolated(myPersonColorInterpolation->getCheck() != FALSE);
845 doRebuildColorMatrices = true;
846 }
847 } else {
848 doRebuildColorMatrices = true;
849 }
850 // containers
851 if (tmpSettings.containerColorer.getActive() == prevContainerMode) {
852 if (updateColorRanges(sender, myContainerColors.begin(), myContainerColors.end(),
854 tmpSettings.containerColorer.getScheme())) {
855 doRebuildColorMatrices = true;
856 }
857 if (sender == myContainerColorInterpolation) {
859 doRebuildColorMatrices = true;
860 }
861 } else {
862 doRebuildColorMatrices = true;
863 }
864 // junctions
865 if (tmpSettings.junctionColorer.getActive() == prevJunctionMode) {
866 if (updateColorRanges(sender, myJunctionColors.begin(), myJunctionColors.end(),
868 tmpSettings.junctionColorer.getScheme())) {
869 doRebuildColorMatrices = true;
870 }
871 if (sender == myJunctionColorInterpolation) {
872 tmpSettings.junctionColorer.getScheme().setInterpolated(myJunctionColorInterpolation->getCheck() != FALSE);
873 doRebuildColorMatrices = true;
874 }
875 } else {
876 doRebuildColorMatrices = true;
877 }
878 // POIs
879 if (tmpSettings.poiColorer.getActive() == prevPOIMode) {
880 if (updateColorRanges(sender, myPOIColors.begin(), myPOIColors.end(),
881 myPOIThresholds.begin(), myPOIThresholds.end(), myPOIButtons.begin(),
882 tmpSettings.poiColorer.getScheme())) {
883 doRebuildColorMatrices = true;
884 }
885 if (sender == myPOIColorInterpolation) {
886 tmpSettings.poiColorer.getScheme().setInterpolated(myPOIColorInterpolation->getCheck() != FALSE);
887 doRebuildColorMatrices = true;
888 }
889 } else {
890 doRebuildColorMatrices = true;
891 }
892 // polygons
893 if (tmpSettings.polyColorer.getActive() == prevPolyMode) {
894 if (updateColorRanges(sender, myPolyColors.begin(), myPolyColors.end(),
895 myPolyThresholds.begin(), myPolyThresholds.end(), myPolyButtons.begin(),
896 tmpSettings.polyColorer.getScheme())) {
897 doRebuildColorMatrices = true;
898 }
899 if (sender == myPolyColorInterpolation) {
900 tmpSettings.polyColorer.getScheme().setInterpolated(myPolyColorInterpolation->getCheck() != FALSE);
901 doRebuildColorMatrices = true;
902 }
903 } else {
904 doRebuildColorMatrices = true;
905 }
906 // data
907 if (tmpSettings.netedit) {
908 if (tmpSettings.dataColorer.getActive() == prevDataMode) {
909 if (updateColorRanges(sender, myDataColors.begin(), myDataColors.end(),
910 myDataThresholds.begin(), myDataThresholds.end(), myDataButtons.begin(),
911 tmpSettings.dataColorer.getScheme())) {
912 doRebuildColorMatrices = true;
913 }
914 if (sender == myDataColorInterpolation) {
915 tmpSettings.dataColorer.getScheme().setInterpolated(myDataColorInterpolation->getCheck() != FALSE);
916 doRebuildColorMatrices = true;
917 }
918 } else {
919 doRebuildColorMatrices = true;
920 }
921 // vehicles (scaling)
922 if (tmpSettings.dataScaler.getActive() == prevDataScaleMode) {
923 if (updateScaleRanges(sender, myDataScales.begin(), myDataScales.end(),
925 tmpSettings.dataScaler.getScheme())) {
926 doRebuildColorMatrices = true;
927 }
928 if (sender == myDataScaleInterpolation) {
929 tmpSettings.dataScaler.getScheme().setInterpolated(myDataScaleInterpolation->getCheck() != FALSE);
930 doRebuildColorMatrices = true;
931 }
932 } else {
933 doRebuildColorMatrices = true;
934 }
935 }
936 // openGL
937 if (sender == myRecalculateBoundaries) {
939 }
940
941 if (sender == myShowPedestrianNetwork) {
942 tmpSettings.showPedestrianNetwork = (myShowPedestrianNetwork->getCheck() != FALSE);
943 myParent->drawPedestrianNetwork(tmpSettings);
944 }
945
946 if (sender == myPedestrianNetworkColor) {
949 }
950
951 if (tmpSettings == *mySettings) {
952 return 1;
953 }
954
955 int index = mySchemeName->getCurrentItem();
956 if (index < (int) gSchemeStorage.getNumInitialSettings()) {
957 // one of the initial settings is modified
958 // every time this happens we create a new scheme
959 int suffix = 1;
960 while (gSchemeStorage.contains("custom_" + toString(suffix))) {
961 suffix++;
962 }
963 tmpSettings.name = "custom_" + toString(suffix);
964 // the newly created settings must be entered in several places:
965 // - the comboBox mySchemeName of this dialog
966 // - the comboBox of the parent view (set as active)
967 // - the comboBox of all other views (only append) XXX @todo
968 index = mySchemeName->appendIconItem(tmpSettings.name.c_str());
970 myParent->getColoringSchemesCombo()->appendIconItem(tmpSettings.name.c_str());
971 }
973 myParent->getColoringSchemesCombo()->findItem(tmpSettings.name.c_str()));
974 gSchemeStorage.add(tmpSettings); // overwrites existing
975 mySettings = &gSchemeStorage.get(tmpSettings.name);
976 myParent->setColorScheme(tmpSettings.name);
977
978 if (doRebuildColorMatrices) {
980 }
981 myParent->handle(this, FXSEL(SEL_CHANGED, MID_SIMPLE_VIEW_COLORCHANGE), nullptr);
982 myParent->forceRefresh();
983 getApp()->forceRefresh();
984 return 1;
985}
986
987
988void
989GUIDialog_ViewSettings::loadSettings(const std::string& file) {
990 GUISettingsHandler handler(file, true, mySettings->netedit);
991 for (std::string settingsName : handler.addSettings(myParent)) {
992 FXint index = mySchemeName->appendIconItem(settingsName.c_str());
994 mySettings = &gSchemeStorage.get(settingsName);
995 }
996 if (handler.hasDecals()) {
998 myParent->getDecals() = handler.getDecals();
1000 myParent->update();
1001 myParent->getDecalsLockMutex().unlock();
1002 }
1003 if (handler.getDelay() >= 0) {
1004 myParent->setDelay(handler.getDelay());
1005 }
1006 if (handler.getBreakpoints().size() > 0) {
1008 }
1009 handler.applyViewport(myParent);
1010 onCmdNameChange(nullptr, 0, nullptr);
1011}
1012
1013
1014void
1016 for (const auto& decal : myParent->getDecals()) {
1017 // only save decals with non empty filename
1018 if (decal.filename.size() > 0) {
1019 // check if decal is a light
1020 const bool isLight = (decal.filename.substr(0, 5) == "light") && (decal.filename.length() == 6) && isdigit(decal.filename[5]);
1021 if (isLight) {
1023 dev.writeAttr(SUMO_ATTR_INDEX, decal.filename.substr(5, 1));
1024 } else {
1026 dev.writeAttr("file", decal.filename);
1027 dev.writeAttr("screenRelative", decal.screenRelative);
1028 }
1029 dev.writeAttr(SUMO_ATTR_CENTER_X, decal.centerX);
1030 dev.writeAttr(SUMO_ATTR_CENTER_Y, decal.centerY);
1031 dev.writeAttr(SUMO_ATTR_CENTER_Z, decal.centerZ);
1032 dev.writeAttr(SUMO_ATTR_WIDTH, decal.width);
1033 dev.writeAttr(SUMO_ATTR_HEIGHT, decal.height);
1034 dev.writeAttr("altitude", decal.altitude);
1035 dev.writeAttr("rotation", decal.rot);
1036 dev.writeAttr("tilt", decal.tilt);
1037 dev.writeAttr("roll", decal.roll);
1038 dev.writeAttr(SUMO_ATTR_LAYER, decal.layer);
1039 dev.closeTag();
1040 }
1041 }
1042}
1043
1044
1045void
1046GUIDialog_ViewSettings::loadDecals(const std::string& file) {
1047 myParent->getDecalsLockMutex().lock();
1048 GUISettingsHandler handler(file);
1049 if (handler.hasDecals()) {
1050 myParent->getDecals() = handler.getDecals();
1051 }
1053 myParent->update();
1054 myParent->getDecalsLockMutex().unlock();
1055}
1056
1057
1058long
1059GUIDialog_ViewSettings::onCmdSaveSetting(FXObject*, FXSelector, void* /*data*/) {
1060 int index = mySchemeName->getCurrentItem();
1061 if (index < (int) gSchemeStorage.getNumInitialSettings()) {
1062 return 1;
1063 }
1064 // get the name
1065 std::string name = "";
1066 while (name.length() == 0) {
1067 FXDialogBox dialog(this, TL("Enter a name"), GUIDesignViewSettingsDialog);
1068 FXVerticalFrame* content = new FXVerticalFrame(&dialog, GUIDesignViewSettingsVerticalFrame5);
1069 new FXLabel(content, TL("Please enter an alphanumeric name: "), nullptr, GUIDesignViewSettingsLabel2);
1070 FXTextField* text = new FXTextField(content, 40, &dialog, FXDialogBox::ID_ACCEPT, GUIDesignViewSettingsTextField1);
1071 new FXHorizontalSeparator(content, GUIDesignHorizontalSeparator);
1072 FXHorizontalFrame* buttons = new FXHorizontalFrame(content, GUIDesignViewSettingsHorizontalFrame3);
1073 GUIDesigns::buildFXButton(buttons, TL("&OK"), "", "", nullptr, &dialog, FXDialogBox::ID_ACCEPT, GUIDesignViewSettingsButton4);
1074 GUIDesigns::buildFXButton(buttons, TL("&Cancel"), "", "", nullptr, &dialog, FXDialogBox::ID_CANCEL, GUIDesignViewSettingsButton5);
1075 dialog.create();
1076 text->setFocus();
1077 if (!dialog.execute()) {
1078 return 1;
1079 }
1080 name = text->getText().text();
1081 for (int i = 0; i < (int)name.length(); ++i) {
1082 if (name[i] != '_' && (name[i] < 'a' || name[i] > 'z') && (name[i] < 'A' || name[i] > 'Z') && (name[i] < '0' || name[i] > '9')) {
1083 name = "";
1084 break;
1085 }
1086 }
1087 }
1089 tmpSettings.copy(*mySettings);
1090 tmpSettings.name = name;
1091 if (name == mySettings->name || StringUtils::startsWith(mySettings->name, "custom_")) {
1093 mySchemeName->removeItem(index);
1095 myParent->getColoringSchemesCombo()->insertIconItem(index, name.c_str());
1096 } else {
1098 index = mySchemeName->appendIconItem(name.c_str());
1101 myParent->getColoringSchemesCombo()->findItem(name.c_str()));
1102 }
1103 gSchemeStorage.add(tmpSettings);
1104 mySchemeName->insertIconItem(index, name.c_str());
1105 myParent->setColorScheme(name);
1106 mySettings = &gSchemeStorage.get(name);
1108 gSchemeStorage.writeSettings(getApp());
1109 return 1;
1110}
1111
1112
1113long
1114GUIDialog_ViewSettings::onUpdSaveSetting(FXObject* sender, FXSelector, void* ptr) {
1115 sender->handle(this,
1117 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1118 ptr);
1119 return 1;
1120}
1121
1122
1123long
1124GUIDialog_ViewSettings::onCmdDeleteSetting(FXObject*, FXSelector, void* /*data*/) {
1125 int index = mySchemeName->getCurrentItem();
1126 if (index < (int) gSchemeStorage.getNumInitialSettings()) {
1127 return 1;
1128 }
1129 std::string name = mySchemeName->getItemText(index);
1130 gSchemeStorage.remove(name);
1131 mySchemeName->removeItem(index);
1133 onCmdNameChange(nullptr, 0, (void*) mySchemeName->getItemText(0).c_str());
1134 gSchemeStorage.writeSettings(getApp());
1135 return 1;
1136}
1137
1138
1139long
1140GUIDialog_ViewSettings::onUpdDeleteSetting(FXObject* sender, FXSelector, void* ptr) {
1141 sender->handle(this,
1143 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1144 ptr);
1145 return 1;
1146}
1147
1148
1149long
1150GUIDialog_ViewSettings::onCmdExportSetting(FXObject*, FXSelector, void* /*data*/) {
1151 FXString file = MFXUtils::getFilename2Write(this, TL("Export view settings"),
1152 SUMOXMLDefinitions::XMLFileExtensions.getMultilineString().c_str(),
1154 if (file == "") {
1155 return 1;
1156 }
1157 try {
1158 OutputDevice& dev = OutputDevice::getDevice(file.text(), false);
1160 if (myParent->is3DView()) {
1161 dev.writeAttr(SUMO_ATTR_TYPE, "osg");
1162 }
1163 mySettings->save(dev);
1164 if (mySaveViewPort->getCheck()) {
1166 }
1167 if (mySaveDelay->getCheck()) {
1170 dev.closeTag();
1171 }
1172 if (mySaveDecals->getCheck()) {
1173 saveDecals(dev);
1174 }
1175 if (!mySettings->netedit && mySaveBreakpoints->getCheck()) {
1179 dev.closeTag();
1180 }
1181 }
1182 dev.closeTag();
1183 dev.close();
1184 } catch (IOError& e) {
1185 FXMessageBox::error(this, MBOX_OK, TL("Storing failed!"), "%s", e.what());
1186 }
1187 return 1;
1188}
1189
1190
1191long
1192GUIDialog_ViewSettings::onUpdExportSetting(FXObject* sender, FXSelector, void* ptr) {
1193 sender->handle(this,
1195 && !mySaveViewPort->getCheck() && !mySaveDelay->getCheck() && !mySaveDecals->getCheck() && !mySaveBreakpoints->getCheck()) ?
1196 FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1197 ptr);
1198 return 1;
1199}
1200
1201
1202long
1203GUIDialog_ViewSettings::onCmdImportSetting(FXObject*, FXSelector, void* /*data*/) {
1204 FXFileDialog opendialog(this, TL("Import view settings"));
1205 opendialog.setIcon(GUIIconSubSys::getIcon(GUIIcon::OPEN));
1206 opendialog.setSelectMode(SELECTFILE_ANY);
1207 opendialog.setPatternList(SUMOXMLDefinitions::ViewSettingsFileExtensions.getMultilineString().c_str());
1208 if (gCurrentFolder.length() != 0) {
1209 opendialog.setDirectory(gCurrentFolder);
1210 }
1211 if (opendialog.execute()) {
1212 gCurrentFolder = opendialog.getDirectory();
1213 loadSettings(opendialog.getFilename().text());
1214 }
1215 return 1;
1216}
1217
1218
1219long
1220GUIDialog_ViewSettings::onCmdLoadDecal(FXObject*, FXSelector, void* /*data*/) {
1221 FXFileDialog opendialog(this, TL("Load Decals"));
1222 opendialog.setIcon(GUIIconSubSys::getIcon(GUIIcon::EMPTY));
1223 opendialog.setSelectMode(SELECTFILE_ANY);
1224 opendialog.setPatternList(SUMOXMLDefinitions::ViewSettingsFileExtensions.getMultilineString().c_str());
1225 if (gCurrentFolder.length() != 0) {
1226 opendialog.setDirectory(gCurrentFolder);
1227 }
1228 if (opendialog.execute()) {
1229 gCurrentFolder = opendialog.getDirectory();
1230 loadDecals(opendialog.getFilename().text());
1231 }
1232 return 1;
1233}
1234
1235
1236long
1237GUIDialog_ViewSettings::onCmdLoadXMLDecals(FXObject*, FXSelector, void* /*data*/) {
1238 FXFileDialog opendialog(this, TL("Load Decals"));
1239 opendialog.setIcon(GUIIconSubSys::getIcon(GUIIcon::EMPTY));
1240 opendialog.setSelectMode(SELECTFILE_ANY);
1241 opendialog.setPatternList(SUMOXMLDefinitions::ViewSettingsFileExtensions.getMultilineString().c_str());
1242 if (gCurrentFolder.length() != 0) {
1243 opendialog.setDirectory(gCurrentFolder);
1244 }
1245 if (opendialog.execute()) {
1246 gCurrentFolder = opendialog.getDirectory();
1247 loadDecals(opendialog.getFilename().text());
1248 }
1249 return 1;
1250}
1251
1252
1253long
1254GUIDialog_ViewSettings::onCmdSaveXMLDecals(FXObject*, FXSelector, void* /*data*/) {
1255 FXString file = MFXUtils::getFilename2Write(this, TL("Save Decals"),
1256 SUMOXMLDefinitions::XMLFileExtensions.getMultilineString().c_str(),
1258 if (file == "") {
1259 return 1;
1260 }
1261 try {
1262 OutputDevice& dev = OutputDevice::getDevice(file.text());
1263 dev.openTag("decals");
1264 saveDecals(dev);
1265 dev.closeTag();
1266 dev.close();
1267 } catch (IOError& e) {
1268 FXMessageBox::error(myParent, MBOX_OK, TL("Storing failed!"), "%s", e.what());
1269 }
1270 return 1;
1271}
1272
1273
1274long
1275GUIDialog_ViewSettings::onCmdClearDecals(FXObject*, FXSelector, void* /*data*/) {
1276 // lock decals mutex
1277 myParent->getDecalsLockMutex().lock();
1278 // clear decals
1279 myParent->getDecals().clear();
1280 // update view
1281 myParent->update();
1282 // fill table again
1284 // unlock decals mutex
1285 myParent->getDecalsLockMutex().unlock();
1286 return 1;
1287}
1288
1289
1290long
1291GUIDialog_ViewSettings::onUpdImportSetting(FXObject* sender, FXSelector, void* ptr) {
1292 sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), ptr);
1293 return 1;
1294}
1295
1296
1297FXMatrix*
1299 std::vector<FXColorWell*>& colors,
1300 std::vector<FXRealSpinner*>& thresholds,
1301 std::vector<FXButton*>& buttons,
1302 FXCheckButton* interpolation,
1303 GUIColorScheme& scheme) {
1305 FXMatrix* m = new FXMatrix(frame, 4, GUIDesignViewSettingsMatrix4);
1306 colors.clear();
1307 thresholds.clear();
1308 buttons.clear();
1309 const bool fixed = scheme.isFixed();
1310 std::vector<RGBColor>::const_iterator colIt = scheme.getColors().begin();
1311 std::vector<double>::const_iterator threshIt = scheme.getThresholds().begin();
1312 std::vector<std::string>::const_iterator nameIt = scheme.getNames().begin();
1313 while (colIt != scheme.getColors().end()) {
1314 colors.push_back(new FXColorWell(m, MFXUtils::getFXColor(*colIt), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsColorWell1));
1315 if (fixed) {
1316 new FXLabel(m, nameIt->c_str());
1317 new FXLabel(m, "");
1318 new FXLabel(m, "");
1319 } else {
1320 const int dialerOptions = scheme.allowsNegativeValues() ? SPIN_NOMIN : 0;
1321 FXRealSpinner* threshDialer = new FXRealSpinner(m, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, FRAME_THICK | FRAME_SUNKEN | LAYOUT_TOP | LAYOUT_CENTER_Y | SPIN_NOMAX | dialerOptions);
1322 threshDialer->setValue(*threshIt);
1323 thresholds.push_back(threshDialer);
1324 if (*threshIt == GUIVisualizationSettings::MISSING_DATA) {
1325 threshDialer->disable();
1326 threshDialer->hide();
1327 buttons.push_back(GUIDesigns::buildFXButton(m, "", "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1328 buttons.back()->hide();
1329 buttons.push_back(GUIDesigns::buildFXButton(m, TL("No Data"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1330 buttons.back()->disable();
1331 } else {
1332 buttons.push_back(GUIDesigns::buildFXButton(m, TL("Add"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1333 buttons.push_back(GUIDesigns::buildFXButton(m, TL("Remove"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1334 if (scheme.getColors().size() == 1) {
1335 buttons.back()->disable();
1336 }
1337 }
1338 }
1339 colIt++;
1340 threshIt++;
1341 nameIt++;
1342 }
1343 interpolation->setCheck(scheme.isInterpolated());
1344 if (fixed) {
1345 interpolation->disable();
1346 } else {
1347 if (colors.size() > 1) {
1348 interpolation->enable();
1349 if (interpolation->getCheck() != FALSE) {
1350 thresholds.front()->enable();
1351 } else {
1352 thresholds.front()->disable();
1353 }
1354 } else {
1355 interpolation->disable();
1356 thresholds.front()->disable();
1357 }
1358 }
1359 return m;
1360}
1361
1362
1363FXMatrix*
1365 std::vector<FXRealSpinner*>& scales,
1366 std::vector<FXRealSpinner*>& thresholds,
1367 std::vector<FXButton*>& buttons,
1368 FXCheckButton* interpolation,
1369 GUIScaleScheme& scheme) {
1371 FXMatrix* m = new FXMatrix(frame, 4, GUIDesignViewSettingsMatrix4);
1372 scales.clear();
1373 thresholds.clear();
1374 buttons.clear();
1375 const bool fixed = scheme.isFixed();
1376 std::vector<double>::const_iterator scaleIt = scheme.getColors().begin();
1377 std::vector<double>::const_iterator threshIt = scheme.getThresholds().begin();
1378 std::vector<std::string>::const_iterator nameIt = scheme.getNames().begin();
1379 while (scaleIt != scheme.getColors().end()) {
1380 FXRealSpinner* scaleDialer = new FXRealSpinner(m, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, FRAME_THICK | FRAME_SUNKEN | LAYOUT_TOP | LAYOUT_CENTER_Y | SPIN_NOMAX);
1381 scaleDialer->setValue(*scaleIt);
1382 scales.push_back(scaleDialer);
1383 if (fixed) {
1384 new FXLabel(m, nameIt->c_str());
1385 new FXLabel(m, "");
1386 new FXLabel(m, "");
1387 } else {
1388 const int dialerOptions = scheme.allowsNegativeValues() ? SPIN_NOMIN : 0;
1389 FXRealSpinner* threshDialer = new FXRealSpinner(m, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, FRAME_THICK | FRAME_SUNKEN | LAYOUT_TOP | LAYOUT_CENTER_Y | SPIN_NOMAX | dialerOptions);
1390 threshDialer->setValue(*threshIt);
1391 thresholds.push_back(threshDialer);
1392 if (*threshIt == GUIVisualizationSettings::MISSING_DATA) {
1393 threshDialer->disable();
1394 threshDialer->hide();
1395 buttons.push_back(GUIDesigns::buildFXButton(m, "", "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1396 buttons.back()->hide();
1397 buttons.push_back(GUIDesigns::buildFXButton(m, TL("No Data"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1398 buttons.back()->disable();
1399 } else {
1400 buttons.push_back(GUIDesigns::buildFXButton(m, TL("Add"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1401 buttons.push_back(GUIDesigns::buildFXButton(m, TL("Remove"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1402 if (scheme.getColors().size() == 1) {
1403 buttons.back()->disable();
1404 }
1405 }
1406 }
1407 scaleIt++;
1408 threshIt++;
1409 nameIt++;
1410 }
1411 interpolation->setCheck(scheme.isInterpolated());
1412 if (fixed) {
1413 interpolation->disable();
1414 } else {
1415 if (scales.size() > 1) {
1416 interpolation->enable();
1417 if (interpolation->getCheck() != FALSE) {
1418 thresholds.front()->enable();
1419 } else {
1420 thresholds.front()->disable();
1421 }
1422 } else {
1423 interpolation->disable();
1424 thresholds.front()->disable();
1425 }
1426 }
1427 return m;
1428}
1429
1430
1431void
1434 if (doCreate) {
1435 m->create();
1436 }
1439 } else {
1441 }
1444 } else {
1446 }
1449 } else {
1451 }
1452 std::string activeSchemeName = myLaneEdgeColorMode->getText().text();
1453 std::string activeScaleSchemeName = myLaneEdgeScaleMode->getText().text();
1454 myParamKey->clearItems();
1455 myScalingParamKey->clearItems();
1457 myMeanDataID->hide();
1459 myParamKey->appendItem(mySettings->edgeParam.c_str());
1460 for (const std::string& attr : myParent->getEdgeLaneParamKeys(true)) {
1461 if (attr != mySettings->edgeParam) {
1462 myParamKey->appendItem(attr.c_str());
1463 }
1464 }
1465 myParamKey->enable();
1466 } else if (activeSchemeName == GUIVisualizationSettings::SCHEME_NAME_LANE_PARAM_NUMERICAL) {
1467 myParamKey->appendItem(mySettings->laneParam.c_str());
1468 for (const std::string& attr : myParent->getEdgeLaneParamKeys(false)) {
1469 if (attr != mySettings->laneParam) {
1470 myParamKey->appendItem(attr.c_str());
1471 }
1472 }
1473 myParamKey->enable();
1474 } else if (activeSchemeName == GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_NUMERICAL) {
1475 myParamKey->appendItem(mySettings->edgeData.c_str());
1476 for (const std::string& attr : myParent->getEdgeDataAttrs()) {
1477 if (attr != mySettings->edgeData) {
1478 myParamKey->appendItem(attr.c_str());
1479 }
1480 }
1481 myParamKey->enable();
1482 } else if (activeSchemeName == GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_LIVE) {
1483 if (mySettings->edgeDataID != "") {
1485 }
1486 for (const std::string& attr : myParent->getMeanDataIDs()) {
1487 if (attr != mySettings->edgeDataID) {
1488 myMeanDataID->appendIconItem(attr.c_str());
1489 }
1490 }
1491 if (myMeanDataID->getNumItems() > 0) {
1492 if (mySettings->edgeDataID == "") {
1494 }
1496 myMeanDataID->show();
1497 myParamKey->appendItem(mySettings->edgeData.c_str());
1498 for (const std::string& attr : myParent->getMeanDataAttrs(mySettings->edgeDataID)) {
1499 if (attr != mySettings->edgeData) {
1500 myParamKey->appendItem(attr.c_str());
1501 }
1502 }
1503 myParamKey->enable();
1504 }
1505 } else {
1506 myParamKey->disable();
1507 }
1508
1509 if (activeScaleSchemeName == GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_NUMERICAL) {
1510 myScalingParamKey->appendItem(mySettings->edgeDataScaling.c_str());
1511 for (const std::string& attr : myParent->getEdgeDataAttrs()) {
1512 if (attr != mySettings->edgeDataScaling) {
1513 myScalingParamKey->appendItem(attr.c_str());
1514 }
1515 }
1516 myScalingParamKey->enable();
1517 } else {
1518 myScalingParamKey->disable();
1519 }
1520
1521 myParamKey->setNumVisible(myParamKey->getNumItems());
1522 myScalingParamKey->setNumVisible(myScalingParamKey->getNumItems());
1523 myLaneColorSettingFrame->getParent()->recalc();
1524
1526 if (doCreate) {
1527 m->create();
1528 }
1529 myLaneScaleSettingFrame->getParent()->recalc();
1530
1532 if (doCreate) {
1533 m->create();
1534 }
1535 activeSchemeName = myVehicleColorMode->getText().text();
1538 myVehicleParamKey->enable();
1539 } else {
1540 myVehicleParamKey->disable();
1541 }
1542 myVehicleColorSettingFrame->getParent()->recalc();
1543
1545 if (doCreate) {
1546 m->create();
1547 }
1548 myVehicleScaleSettingFrame->getParent()->recalc();
1549 activeScaleSchemeName = myVehicleScaleMode->getText().text();
1550 if (activeScaleSchemeName == GUIVisualizationSettings::SCHEME_NAME_PARAM_NUMERICAL) {
1551 myVehicleScalingParamKey->enable();
1552 } else {
1553 myVehicleScalingParamKey->disable();
1554 }
1555
1556
1558 if (doCreate) {
1559 m->create();
1560 }
1561 myPersonColorSettingFrame->getParent()->recalc();
1563 if (doCreate) {
1564 m->create();
1565 }
1566 myContainerColorSettingFrame->getParent()->recalc();
1568 if (doCreate) {
1569 m->create();
1570 }
1571 myJunctionColorSettingFrame->getParent()->recalc();
1572 // POIs
1574 if (doCreate) {
1575 m->create();
1576 }
1577 myPOIColorSettingFrame->getParent()->recalc();
1578 // polygons
1580 if (doCreate) {
1581 m->create();
1582 }
1583 myPolyColorSettingFrame->getParent()->recalc();
1584
1585 // data
1586 if (mySettings->netedit) {
1589 } else {
1591 }
1593 if (doCreate) {
1594 m->create();
1595 }
1596 activeSchemeName = myDataColorMode->getText().text();
1598 myDataParamKey->clearItems();
1599 myDataParamKey->appendItem(mySettings->relDataAttr.c_str());
1600 for (const std::string& attr : myParent->getRelDataAttrs()) {
1601 if (attr != mySettings->relDataAttr) {
1602 myDataParamKey->appendItem(attr.c_str());
1603 }
1604 }
1605 myDataParamKey->enable();
1606 } else {
1607 myDataParamKey->disable();
1608 }
1609 myDataColorSettingFrame->getParent()->recalc();
1610
1611 // scaling
1613 if (doCreate) {
1614 m->create();
1615 }
1616 activeScaleSchemeName = myDataScaleMode->getText().text();
1618 myDataScaleParamKey->clearItems();
1619 myDataScaleParamKey->appendItem(mySettings->relDataScaleAttr.c_str());
1620 for (const std::string& attr : myParent->getRelDataAttrs()) {
1621 if (attr != mySettings->relDataScaleAttr) {
1622 myDataScaleParamKey->appendItem(attr.c_str());
1623 }
1624 }
1625 myDataScaleParamKey->enable();
1626 } else {
1627 myDataScaleParamKey->disable();
1628 }
1629 myDataScaleSettingFrame->getParent()->recalc();
1630 }
1631
1632 layout();
1633 update();
1634}
1635
1636
1637void
1639 myVehicleParamKey->clearItems();
1640 myVehicleTextParamKey->clearItems();
1641 myVehicleScalingParamKey->clearItems();
1642 myVehicleParamKey->appendItem(mySettings->vehicleParam.c_str());
1645 for (const std::string& attr : myParent->getVehicleParamKeys(false)) {
1646 myVehicleParamKey->appendItem(attr.c_str());
1647 myVehicleTextParamKey->appendItem(attr.c_str());
1648 myVehicleScalingParamKey->appendItem(attr.c_str());
1649 }
1650 myVehicleParamKey->setNumVisible(myVehicleParamKey->getNumItems());
1651 myVehicleTextParamKey->setNumVisible(myVehicleTextParamKey->getNumItems());
1652 myVehicleScalingParamKey->setNumVisible(myVehicleScalingParamKey->getNumItems());
1653}
1654
1655
1656void
1658 myPOITextParamKey->clearItems();
1659 myPOITextParamKey->appendItem(mySettings->poiTextParam.c_str());
1660 for (const std::string& attr : myParent->getPOIParamKeys()) {
1661 myPOITextParamKey->appendItem(attr.c_str());
1662 }
1663 myPOITextParamKey->setNumVisible(myPOITextParamKey->getNumItems());
1664}
1665
1666
1667std::string
1671
1672
1673void
1675 if (name.c_str() == mySchemeName->getItemText(mySchemeName->getCurrentItem())) {
1676 return;
1677 }
1678 for (int i = 0; i < mySchemeName->getNumItems(); ++i) {
1679 if (name.c_str() == mySchemeName->getItemText(i)) {
1681 onCmdNameChange(nullptr, 0, (void*)name.c_str());
1682 return;
1683 }
1684 }
1685}
1686
1687
1689 FXMatrix* parent,
1690 GUIDialog_ViewSettings* target,
1691 const std::string& title,
1692 const GUIVisualizationTextSettings& settings) {
1693 myCheck = new FXCheckButton(parent, title.c_str(), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1694 myCheck->setCheck(settings.showText);
1695 myMatrix0 = new FXMatrix(parent, 2, GUIDesignViewSettingsMatrix5);
1696 mySelectedCheck = new FXCheckButton(myMatrix0, TL("Only for selected"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1697 mySelectedCheck->setCheck(settings.onlySelected);
1698 myConstSizeCheck = new FXCheckButton(myMatrix0, TL("constant text size"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1699 myConstSizeCheck->setCheck(settings.constSize);
1700 FXMatrix* m1 = new FXMatrix(parent, 2, GUIDesignViewSettingsMatrix5);
1701 new FXLabel(m1, TL("Size"), nullptr, GUIDesignViewSettingsLabel1);
1702 mySizeDial = new FXRealSpinner(m1, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
1703 mySizeDial->setRange(5, 1000);
1704 mySizeDial->setValue(settings.size);
1705 FXMatrix* m2 = new FXMatrix(parent, 4, GUIDesignViewSettingsMatrix5);
1706 new FXLabel(m2, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
1708 new FXLabel(m2, TL("Background"), nullptr, GUIDesignViewSettingsLabel1);
1710}
1711
1712
1715 return GUIVisualizationTextSettings(myCheck->getCheck() != FALSE,
1716 mySizeDial->getValue(),
1717 MFXUtils::getRGBColor(myColorWell->getRGBA()),
1718 MFXUtils::getRGBColor(myBGColorWell->getRGBA()),
1719 myConstSizeCheck->getCheck() != FALSE,
1720 mySelectedCheck->getCheck() != FALSE);
1721}
1722
1723
1724void
1726 myCheck->setCheck(settings.showText);
1727 mySizeDial->setValue(settings.size);
1728 myColorWell->setRGBA(MFXUtils::getFXColor(settings.color));
1729 myBGColorWell->setRGBA(MFXUtils::getFXColor(settings.bgColor));
1730 myConstSizeCheck->setCheck(settings.constSize);
1731 mySelectedCheck->setCheck(settings.onlySelected);
1732}
1733
1734
1736 const GUIVisualizationSizeSettings& settings, GUIGlObjectType type):
1737 myDialogViewSettings(target),
1738 myType(type) {
1739 myCheck = new FXCheckButton(parent, TL("Draw with constant size when zoomed out"), this, MID_SIMPLE_VIEW_SIZECHANGE, GUIDesignCheckButtonViewSettings);
1740 myCheck->setCheck(settings.constantSize);
1741 myCheckSelected = new FXCheckButton(parent, TL("Only for selected"), this, MID_SIMPLE_VIEW_SIZECHANGE, GUIDesignCheckButtonViewSettings);
1742 myCheckSelected->setCheck(settings.constantSizeSelected);
1743 FXMatrix* m1 = new FXMatrix(parent, 2, GUIDesignViewSettingsMatrix5);
1744 new FXLabel(m1, TL("Minimum Size"), nullptr, GUIDesignViewSettingsLabel1);
1746 myMinSizeDial->setValue(settings.minSize);
1747 FXMatrix* m2 = new FXMatrix(parent, 2, GUIDesignViewSettingsMatrix5);
1748 new FXLabel(m2, TL("Exaggerate by"), nullptr, GUIDesignViewSettingsLabel1);
1750 myExaggerateDial->setRange(0, 10000);
1751 myExaggerateDial->setValue(settings.exaggeration);
1752}
1753
1754
1758 myMinSizeDial->getValue(), myExaggerateDial->getValue(),
1759 myCheck->getCheck() != FALSE,
1760 myCheckSelected->getCheck() != FALSE);
1761}
1762
1763
1764void
1766 myCheck->setCheck(settings.constantSize);
1767 myCheckSelected->setCheck(settings.constantSizeSelected);
1768 myMinSizeDial->setValue(settings.minSize);
1769 myExaggerateDial->setValue(settings.exaggeration);
1770}
1771
1772
1773long
1774GUIDialog_ViewSettings::SizePanel::onCmdSizeChange(FXObject* obj, FXSelector sel, void* ptr) {
1775 // mark boundaries for recomputing
1777 // continue as a normal change
1778 return myDialogViewSettings->onCmdColorChange(obj, sel, ptr);
1779}
1780
1781
1783 FXComposite* parent,
1784 GUIDialog_ViewSettings* target,
1785 const GUIVisualizationRainbowSettings& settings) {
1786 FXMatrix* matrixRainbow = new FXMatrix(parent, 9, GUIDesignViewSettingsMatrix3);
1787 myColorRainbow = GUIDesigns::buildFXButton(matrixRainbow, TL("Recalibrate Rainbow"), "", "", nullptr, target, MID_SIMPLE_VIEW_COLORCHANGE,
1788 (BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT), 0, 0, 0, 0, 20, 20, 4, 4);
1789 myRainbowStyle = new MFXComboBoxIcon(matrixRainbow, nullptr, false, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsComboBox1);
1791 myRainbowStyle->appendIconItem(item.first.c_str());
1792 }
1793 myRainbowStyle->setCurrentItem(settings.rainbowScheme);
1794 myHideMinCheck = new FXCheckButton(matrixRainbow, TL("min"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1795 myHideMinCheck->setCheck(settings.hideMin);
1796 myMinThreshold = new FXRealSpinner(matrixRainbow, 6, target, MID_SIMPLE_VIEW_COLORCHANGE, REALSPIN_NOMIN | GUIDesignViewSettingsSpinDial2);
1797 myMinThreshold->setRange(-std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
1798 myMinThreshold->setValue(settings.minThreshold);
1799 myHideMaxCheck = new FXCheckButton(matrixRainbow, TL("max"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1800 myHideMaxCheck->setCheck(settings.hideMax);
1801 myMaxThreshold = new FXRealSpinner(matrixRainbow, 6, target, MID_SIMPLE_VIEW_COLORCHANGE, REALSPIN_NOMIN | GUIDesignViewSettingsSpinDial2);
1802 myMaxThreshold->setRange(-std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
1803 myMaxThreshold->setValue(settings.maxThreshold);
1804 mySetNeutral = new FXCheckButton(matrixRainbow, TL("center"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1805 mySetNeutral->setCheck(settings.setNeutral);
1806 myNeutralThreshold = new FXRealSpinner(matrixRainbow, 6, target, MID_SIMPLE_VIEW_COLORCHANGE, REALSPIN_NOMIN | GUIDesignViewSettingsSpinDial2);
1807 myNeutralThreshold->setRange(-std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
1808 myNeutralThreshold->setValue(settings.neutralThreshold);
1809 myFixRange = new FXCheckButton(matrixRainbow, TL("fix range"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1810 myFixRange->setCheck(settings.fixRange);
1811}
1812
1813
1816 GUIVisualizationRainbowSettings res(myHideMinCheck->getCheck() != FALSE,
1817 myMinThreshold->getValue(),
1818 myHideMaxCheck->getCheck() != FALSE,
1819 myMaxThreshold->getValue(),
1820 mySetNeutral->getCheck() != FALSE,
1821 myNeutralThreshold->getValue(),
1822 myFixRange->getCheck() != FALSE,
1823 myRainbowStyle->getCurrentItem());
1824 std::string sName = myRainbowStyle->getItemText(myRainbowStyle->getCurrentItem());
1826 return res;
1827}
1828
1829
1830void
1832 myHideMinCheck->setCheck(settings.hideMin);
1833 myMinThreshold->setValue(settings.minThreshold);
1834 myHideMaxCheck->setCheck(settings.hideMax);
1835 myMaxThreshold->setValue(settings.maxThreshold);
1836 mySetNeutral->setCheck(settings.setNeutral);
1837 myNeutralThreshold->setValue(settings.neutralThreshold);
1838 myFixRange->setCheck(settings.fixRange);
1839 myRainbowStyle->setCurrentItem(settings.rainbowScheme);
1840}
1841
1842void
1843GUIDialog_ViewSettings::buildHeader(FXVerticalFrame* contentFrame) {
1844 FXHorizontalFrame* horizontalFrame = new FXHorizontalFrame(contentFrame, GUIDesignViewSettingsHorizontalFrame1);
1845 mySchemeName = new MFXComboBoxIcon(horizontalFrame, nullptr, true, GUIDesignComboBoxVisibleItems,
1847 for (const auto& name : gSchemeStorage.getNames()) {
1848 const int index = mySchemeName->appendIconItem(name.c_str());
1849 if (name == mySettings->name) {
1850 mySchemeName->setCurrentItem((FXint)index);
1851 }
1852 }
1853
1854 GUIDesigns::buildFXButton(horizontalFrame, "", "", TL("Save the setting to registry"), GUIIconSubSys::getIcon(GUIIcon::SAVE_DATABASE), this, MID_SIMPLE_VIEW_SAVE, GUIDesignButtonToolbar);
1855 GUIDesigns::buildFXButton(horizontalFrame, "", "", TL("Remove the setting from registry"), GUIIconSubSys::getIcon(GUIIcon::REMOVEDB), this, MID_SIMPLE_VIEW_DELETE, GUIDesignButtonToolbar);
1856 GUIDesigns::buildFXButton(horizontalFrame, "", "", TL("Export setting to file"), GUIIconSubSys::getIcon(GUIIcon::SAVE), this, MID_SIMPLE_VIEW_EXPORT, GUIDesignButtonToolbar);
1857 GUIDesigns::buildFXButton(horizontalFrame, "", "", TL("Load setting from file"), GUIIconSubSys::getIcon(GUIIcon::OPEN), this, MID_SIMPLE_VIEW_IMPORT, GUIDesignButtonToolbar);
1858
1859 new FXVerticalSeparator(horizontalFrame);
1860 new FXLabel(horizontalFrame, TL("Export includes:"), nullptr, GUIDesignViewSettingsLabel1);
1861 mySaveViewPort = new FXCheckButton(horizontalFrame, TL("Viewport"));
1862 mySaveDelay = new FXCheckButton(horizontalFrame, TL("Delay"));
1863 mySaveDecals = new FXCheckButton(horizontalFrame, TL("Decals"));
1864 mySaveBreakpoints = new FXCheckButton(horizontalFrame, TL("Breakpoints"));
1865 if (mySettings->netedit) {
1866 mySaveBreakpoints->disable();
1867 }
1868}
1869
1870
1871void
1873 // tab for the background
1874 new FXTabItem(tabbook, TL("Background"), nullptr, GUIDesignViewSettingsTabItemBook1);
1875 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
1876 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
1877
1878 FXMatrix* matrixColor = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
1879 new FXLabel(matrixColor, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
1881
1882 FXVerticalFrame* verticalFrameDecals = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame3);
1883 new FXLabel(verticalFrameDecals, TL("Decals:"));
1884 myDecalsTable = new MFXDecalsTable(this, verticalFrameDecals);
1885 FXHorizontalFrame* horizontalFrameButtonsDecals = new FXHorizontalFrame(verticalFrameDecals, GUIDesignViewSettingsHorizontalFrame2);
1886 GUIDesigns::buildFXButton(horizontalFrameButtonsDecals, TL("&Load XML Decals"), "", "", nullptr, this, MID_SIMPLE_VIEW_LOAD_DECALS_XML, GUIDesignViewSettingsButton1);
1887 GUIDesigns::buildFXButton(horizontalFrameButtonsDecals, TL("&Save XML Decals"), "", "", nullptr, this, MID_SIMPLE_VIEW_SAVE_DECALS_XML, GUIDesignViewSettingsButton1);
1888 GUIDesigns::buildFXButton(horizontalFrameButtonsDecals, TL("&Clear Decals"), "", "", nullptr, this, MID_SIMPLE_VIEW_CLEAR_DECALS, GUIDesignViewSettingsButton1);
1889
1890 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
1891
1892 FXMatrix* matrixGrid = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix1);
1893 myShowGrid = new FXCheckButton(matrixGrid, TL("Toggle grid"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1894 myShowGrid->setCheck(mySettings->showGrid);
1895 new FXLabel(matrixGrid, "");
1896 FXMatrix* matrixGridX = new FXMatrix(matrixGrid, 2, GUIDesignViewSettingsMatrix2);
1897 new FXLabel(matrixGridX, TL("x-spacing"), nullptr, GUIDesignViewSettingsLabel1);
1898 myGridXSizeDialer = new FXRealSpinner(matrixGridX, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
1899 myGridXSizeDialer->setRange(1, 10000);
1901 FXMatrix* matrixGridY = new FXMatrix(matrixGrid, 2, GUIDesignViewSettingsMatrix2);
1902 new FXLabel(matrixGridY, TL("y-spacing"), nullptr, GUIDesignViewSettingsLabel1);
1903 myGridYSizeDialer = new FXRealSpinner(matrixGridY, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
1904 myGridYSizeDialer->setRange(1, 10000);
1906}
1907
1908
1909void
1911 new FXTabItem(tabbook, TL("Streets"), nullptr, GUIDesignViewSettingsTabItemBook1);
1912 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
1913 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
1914 // ... color settings
1915 FXVerticalFrame* verticalFrameColor = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame6);
1916 FXMatrix* matrixColor = new FXMatrix(verticalFrameColor, 5, GUIDesignViewSettingsMatrix3);
1917 new FXLabel(matrixColor, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
1918 myLaneEdgeColorMode = new MFXComboBoxIcon(matrixColor, nullptr, true, GUIDesignComboBoxVisibleItems,
1920 myLaneColorInterpolation = new FXCheckButton(matrixColor, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1921 myLaneColorSettingFrame = new FXVerticalFrame(verticalFrameColor, GUIDesignViewSettingsVerticalFrame4);
1922 myMeanDataID = new MFXComboBoxIcon(matrixColor, nullptr, false, GUIDesignComboBoxVisibleItems,
1925 myMeanDataID->hide();
1926 myParamKey = new FXComboBox(matrixColor, 1, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignComboBoxStatic);
1927 myParamKey->setEditable(true);
1928 myParamKey->disable();
1929
1930 // rainbow settings
1931 myEdgeRainbowPanel = new RainbowPanel(verticalFrameColor, this, mySettings->edgeValueRainBow);
1932
1933 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
1934 // ... scale settings
1935 FXVerticalFrame* verticalFrameScale = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame6);
1936 FXMatrix* matrixScale = new FXMatrix(verticalFrameScale, 5, GUIDesignViewSettingsMatrix3);
1937 new FXLabel(matrixScale, TL("Scale width"), nullptr, GUIDesignViewSettingsLabel1);
1938 myLaneEdgeScaleMode = new MFXComboBoxIcon(matrixScale, nullptr, true, GUIDesignComboBoxVisibleItems,
1940 myLaneScaleInterpolation = new FXCheckButton(matrixScale, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1941 myLaneScaleSettingFrame = new FXVerticalFrame(verticalFrameScale, GUIDesignViewSettingsVerticalFrame4);
1942 myScalingParamKey = new FXComboBox(matrixScale, 1, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignComboBoxStatic);
1943 myScalingParamKey->setEditable(true);
1944 myScalingParamKey->disable();
1945
1949 } else {
1952 }
1953
1954 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
1955 FXMatrix* matrixLanes = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix1);
1956
1957 myShowBikeMarkings = new FXCheckButton(matrixLanes, TL("Show bike markings"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1959 myShowLaneDecals = new FXCheckButton(matrixLanes, TL("Show turning arrows"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1961
1962 myShowLinkRules = new FXCheckButton(matrixLanes, TL("Show right-of-way rules"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1964 myRealisticLinkRules = new FXCheckButton(matrixLanes, TL("Realistic stop line colors"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1966
1967 myShowLaneBorders = new FXCheckButton(matrixLanes, TL("Show lane borders"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1969 myShowLaneDirection = new FXCheckButton(matrixLanes, TL("Show lane direction"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1971
1972 myHideMacroConnectors = new FXCheckButton(matrixLanes, TL("Hide macro connectors"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1974 myShowSublanes = new FXCheckButton(matrixLanes, TL("Show sublanes"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1976
1977 myShowRails = new FXCheckButton(matrixLanes, TL("Show rails"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1978 myShowRails->setCheck(mySettings->showRails);
1979
1980 mySpreadSuperposed = new FXCheckButton(matrixLanes, TL("Spread bidirectional railways/roads"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1981 mySpreadSuperposed->setHelpText(TL("Make both directional edges for a bidirectional railways or roads visible"));
1983
1984 mySecondaryShape = new FXCheckButton(matrixLanes, TL("Secondary shape"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1986 new FXLabel(matrixLanes, " ", nullptr, GUIDesignViewSettingsLabel1);
1987 if (!OptionsCont::getOptions().exists("alternative-net-file") ||
1988 !OptionsCont::getOptions().isSet("alternative-net-file")) {
1989 mySecondaryShape->disable();
1990 }
1991
1992 FXMatrix* tmp0 = new FXMatrix(matrixLanes, 2, GUIDesignViewSettingsMatrix5);
1993 new FXLabel(tmp0, TL("Exaggerate width by"), nullptr, GUIDesignViewSettingsLabel1);
1995 myLaneWidthUpscaleDialer->setRange(0, 1000000);
1997
1998 FXMatrix* tmp1 = new FXMatrix(matrixLanes, 2, GUIDesignViewSettingsMatrix5);
1999 new FXLabel(tmp1, TL("Minimum size"), nullptr, GUIDesignViewSettingsLabel1);
2001 myLaneMinWidthDialer->setRange(0, 1000000);
2003
2004 // edge name
2005 myEdgeNamePanel = new NamePanel(matrixLanes, this, TL("Show edge id"), mySettings->edgeName);
2006 myStreetNamePanel = new NamePanel(matrixLanes, this, TL("Show street name"), mySettings->streetName);
2007 myEdgeValuePanel = new NamePanel(matrixLanes, this, TL("Show edge color value"), mySettings->edgeValue);
2008 myEdgeScaleValuePanel = new NamePanel(matrixLanes, this, TL("Show edge scale value"), mySettings->edgeScaleValue);
2009}
2010
2011
2012void
2014 new FXTabItem(tabbook, TL("Vehicles"), nullptr, GUIDesignViewSettingsTabItemBook1);
2015 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2016 FXVerticalFrame* verticalframe = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2017
2018 FXMatrix* matrixShowAs = new FXMatrix(verticalframe, 2, GUIDesignViewSettingsMatrix3);
2019 new FXLabel(matrixShowAs, TL("Show As"), nullptr, GUIDesignViewSettingsLabel1);
2020 myVehicleShapeDetail = new MFXComboBoxIcon(matrixShowAs, nullptr, false, GUIDesignComboBoxVisibleItems,
2022 myVehicleShapeDetail->appendIconItem(TL("'triangles'"));
2024 myVehicleShapeDetail->appendIconItem(TL("'simple shapes'"));
2025 myVehicleShapeDetail->appendIconItem(TL("'raster images'"));
2026 myVehicleShapeDetail->appendIconItem(TL("'circles'"));
2028
2029 new FXHorizontalSeparator(verticalframe, GUIDesignHorizontalSeparator);
2030
2031 FXMatrix* matrixColor = new FXMatrix(verticalframe, 4, GUIDesignViewSettingsMatrix3);
2032 new FXLabel(matrixColor, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2033 myVehicleColorMode = new MFXComboBoxIcon(matrixColor, nullptr, true, GUIDesignComboBoxVisibleItems,
2036 myVehicleColorInterpolation = new FXCheckButton(matrixColor, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2037 myVehicleParamKey = new FXComboBox(matrixColor, 1, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignComboBoxStatic);
2038 myVehicleParamKey->setEditable(true);
2039 myVehicleParamKey->disable();
2040
2041 // rainbow settings
2043
2044 myVehicleColorSettingFrame = new FXVerticalFrame(verticalframe, GUIDesignViewSettingsVerticalFrame4);
2045 new FXHorizontalSeparator(verticalframe, GUIDesignHorizontalSeparator);
2046
2047 // vehicle scale settings
2048 FXVerticalFrame* verticalFrameScale = new FXVerticalFrame(verticalframe, GUIDesignViewSettingsVerticalFrame6);
2049 FXMatrix* matrixScale = new FXMatrix(verticalFrameScale, 4, GUIDesignViewSettingsMatrix3);
2050 new FXLabel(matrixScale, TL("Scale size"), nullptr, GUIDesignViewSettingsLabel1);
2051 myVehicleScaleMode = new MFXComboBoxIcon(matrixScale, nullptr, true, GUIDesignComboBoxVisibleItems,
2053 myVehicleScaleInterpolation = new FXCheckButton(matrixScale, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2054 myVehicleScalingParamKey = new FXComboBox(matrixScale, 1, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignComboBoxStatic);
2055 myVehicleScalingParamKey->setEditable(true);
2056 myVehicleScalingParamKey->disable();
2057 myVehicleScaleSettingFrame = new FXVerticalFrame(verticalFrameScale, GUIDesignViewSettingsVerticalFrame4);
2059 new FXHorizontalSeparator(verticalframe, GUIDesignHorizontalSeparator);
2060
2061 FXMatrix* matrixVehicle = new FXMatrix(verticalframe, 2, GUIDesignMatrixViewSettings);
2062 myVehicleNamePanel = new NamePanel(matrixVehicle, this, TL("Show vehicle id"), mySettings->vehicleName);
2063 myVehicleValuePanel = new NamePanel(matrixVehicle, this, TL("Show vehicle color value"), mySettings->vehicleValue);
2064 myVehicleScaleValuePanel = new NamePanel(matrixVehicle, this, TL("Show vehicle scale value"), mySettings->vehicleScaleValue);
2065 myVehicleTextPanel = new NamePanel(matrixVehicle, this, TL("Show vehicle text param"), mySettings->vehicleText);
2067 myVehicleTextParamKey->setEditable(true);
2068 //new FXHorizontalSeparator(verticalframe, GUIDesignHorizontalSeparator);
2069
2070 FXMatrix* matrixShow = new FXMatrix(verticalframe, 2, GUIDesignMatrixViewSettings);
2071 myShowBlinker = new FXCheckButton(matrixShow, TL("Show blinker / brake lights"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2073 myShowMinGap = new FXCheckButton(matrixShow, TL("Show minimum gap"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2075 myShowBrakeGap = new FXCheckButton(matrixShow, TL("Show brake gap"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2077 myShowBTRange = new FXCheckButton(matrixShow, TL("Show Bluetooth range"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2079 myShowRouteIndex = new FXCheckButton(matrixShow, TL("Show route index"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2081 myScaleLength = new FXCheckButton(matrixShow, TL("Scale length with geometry"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2083 const std::string parkingInfo = mySettings->netedit ? TL("Show stopping info") : TL("Show parking info");
2084 myShowParkingInfo = new FXCheckButton(matrixShow, parkingInfo.c_str(), this, MID_SIMPLE_VIEW_COLORCHANGE);
2086 myShowChargingInfo = new FXCheckButton(matrixShow, TL("Show charging info"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2088 myDrawReversed = new FXCheckButton(matrixShow, TL("Draw reversed vehicles in reverse"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2090 //new FXLabel(matrixShow, " ", nullptr, GUIDesignViewSettingsLabel1);
2091 //myShowLaneChangePreference = new FXCheckButton(matrixShow, TL("Show lane change preference"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2092 //myShowLaneChangePreference->setCheck(mySettings->drawLaneChangePreference);
2093 //tmpc = new FXCheckButton(matrixShow, TL("Show needed headway"), 0 ,0);
2094 //tmpc->disable();
2095
2096 //new FXHorizontalSeparator(frame3, GUIDesignHorizontalSeparator);
2097
2098 FXMatrix* matrixSize = new FXMatrix(verticalframe, 2, GUIDesignViewSettingsMatrix1);
2100}
2101
2102
2103void
2105 new FXTabItem(tabbook, TL("Persons"), nullptr, GUIDesignViewSettingsTabItemBook1);
2106 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2107 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2108
2109 FXMatrix* m101 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix3);
2110 new FXLabel(m101, TL("Show As"), nullptr, GUIDesignViewSettingsLabel1);
2113 myPersonShapeDetail->appendIconItem(TL("'triangles'"));
2114 myPersonShapeDetail->appendIconItem(TL("'circles'"));
2115 myPersonShapeDetail->appendIconItem(TL("'simple shapes'"));
2116 myPersonShapeDetail->appendIconItem(TL("'raster images'"));
2118
2119 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2120
2121 FXMatrix* m102 = new FXMatrix(verticalFrame, 3, GUIDesignViewSettingsMatrix3);
2122 new FXLabel(m102, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2126 myPersonColorInterpolation = new FXCheckButton(m102, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2127
2128 myPersonColorSettingFrame = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame4);
2129
2130 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2131
2132 FXMatrix* m103 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2133 myPersonNamePanel = new NamePanel(m103, this, TL("Show person id"), mySettings->personName);
2134 myPersonValuePanel = new NamePanel(m103, this, TL("Show person color value"), mySettings->personValue);
2135
2136 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2137
2138 FXMatrix* m104 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix1);
2140
2141 FXMatrix* m105 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix3);
2142 myShowPedestrianNetwork = new FXCheckButton(m105, TL("Show JuPedSim pedestrian network"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2145#ifdef JPS_VERSION
2146 if (mySettings->netedit) {
2147#endif
2148 myShowPedestrianNetwork->disable();
2149 myPedestrianNetworkColor->disable();
2150#ifdef JPS_VERSION
2151 }
2152#endif
2153}
2154
2155
2156void
2158 new FXTabItem(tabbook, TL("Containers"), nullptr, GUIDesignViewSettingsTabItemBook1);
2159 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2160 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2161
2162 FXMatrix* m101 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix3);
2163 new FXLabel(m101, TL("Show As"), nullptr, GUIDesignViewSettingsLabel1);
2166 myContainerShapeDetail->appendIconItem(TL("'triangles'"));
2168 myContainerShapeDetail->appendIconItem(TL("'simple shapes'"));
2169 myContainerShapeDetail->appendIconItem(TL("'raster images'"));
2171
2172 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2173
2174 FXMatrix* m102 = new FXMatrix(verticalFrame, 3, GUIDesignViewSettingsMatrix3);
2175 new FXLabel(m102, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2179 myContainerColorInterpolation = new FXCheckButton(m102, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2180
2181 myContainerColorSettingFrame = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame4);
2182
2183 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2184
2185 FXMatrix* m103 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2186 myContainerNamePanel = new NamePanel(m103, this, TL("Show container id"), mySettings->containerName);
2187
2188 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2189
2190 FXMatrix* m104 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix1);
2192}
2193
2194
2195void
2197 new FXTabItem(tabbook, TL("Junctions"), nullptr, GUIDesignViewSettingsTabItemBook1);
2198 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2199 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2200 FXMatrix* m41 = new FXMatrix(verticalFrame, 3, GUIDesignViewSettingsMatrix3);
2201 new FXLabel(m41, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2206
2207 myJunctionColorSettingFrame = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame4);
2209
2210 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2211 FXMatrix* m42 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2213 myDrawJunctionShape = new FXCheckButton(m42, TL("Draw junction shape"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2215 myDrawCrossingsAndWalkingAreas = new FXCheckButton(m42, TL("Draw crossings/walkingareas"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2217 myShowLane2Lane = new FXCheckButton(m42, TL("Show lane to lane connections"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2219 new FXLabel(m42, " ", nullptr, GUIDesignViewSettingsLabel1);
2220
2221 myTLIndexPanel = new NamePanel(m42, this, TL("Show link tls index"), mySettings->drawLinkTLIndex);
2222 myJunctionIndexPanel = new NamePanel(m42, this, TL("Show link junction index"), mySettings->drawLinkJunctionIndex);
2223 myJunctionIDPanel = new NamePanel(m42, this, TL("Show junction id"), mySettings->junctionID);
2224 myInternalJunctionNamePanel = new NamePanel(m42, this, TL("Show internal junction id"), mySettings->internalJunctionName);
2225 myInternalEdgeNamePanel = new NamePanel(m42, this, TL("Show internal edge id"), mySettings->internalEdgeName);
2226 myCwaEdgeNamePanel = new NamePanel(m42, this, TL("Show crossing and walkingarea id"), mySettings->cwaEdgeName);
2227 myTLSPhaseIndexPanel = new NamePanel(m42, this, TL("Show traffic light phase index"), mySettings->tlsPhaseIndex);
2228 myTLSPhaseNamePanel = new NamePanel(m42, this, TL("Show traffic light phase name"), mySettings->tlsPhaseName);
2229 myJunctionNamePanel = new NamePanel(m42, this, TL("Show junction name"), mySettings->junctionName);
2230}
2231
2232
2233void
2235 new FXTabItem(tabbook, TL("Additional"), nullptr, GUIDesignViewSettingsTabItemBook1);
2236 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2237 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2238 // IDs
2239 FXMatrix* matrixIDs = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2240 myAddNamePanel = new NamePanel(matrixIDs, this, TL("Show object id"), mySettings->addName);
2241 myAddFullNamePanel = new NamePanel(matrixIDs, this, TL("Show full name"), mySettings->addFullName);
2242 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2243 //Sizes
2244 FXMatrix* matrixSizes = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2246 // color
2247 FXMatrix* matrixColor = new FXMatrix(verticalFrame, 3, GUIDesignMatrixViewSettings);
2248 new FXLabel(matrixColor, TL("StoppingPlace"), nullptr, GUIDesignViewSettingsLabel1);
2249 new FXLabel(matrixColor, TL("body"), nullptr, GUIDesignViewSettingsLabel1);
2250 new FXLabel(matrixColor, TL("sign"), nullptr, GUIDesignViewSettingsLabel1);
2251 new FXLabel(matrixColor, "busStops", nullptr, GUIDesignViewSettingsLabel1);
2254 new FXLabel(matrixColor, "trainStops", nullptr, GUIDesignViewSettingsLabel1);
2257 new FXLabel(matrixColor, "containerStops", nullptr, GUIDesignViewSettingsLabel1);
2260 new FXLabel(matrixColor, "chargingStations", nullptr, GUIDesignViewSettingsLabel1);
2263}
2264
2265
2266void
2268 new FXTabItem(tabbook, TL("Demand"), nullptr, GUIDesignViewSettingsTabItemBook1);
2269 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2270 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2271 // elements
2272 FXMatrix* demandMatrix = new FXMatrix(verticalFrame, 3, GUIDesignMatrixViewSettings);
2273 new FXLabel(demandMatrix, TL("element"), nullptr, GUIDesignViewSettingsLabel1);
2274 new FXLabel(demandMatrix, TL("color"), nullptr, GUIDesignViewSettingsLabel1);
2275 new FXLabel(demandMatrix, TL("width"), nullptr, GUIDesignViewSettingsLabel1);
2276 new FXLabel(demandMatrix, "trips", nullptr, GUIDesignViewSettingsLabel1);
2278 myTripWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2280 new FXLabel(demandMatrix, "personTrips", nullptr, GUIDesignViewSettingsLabel1);
2282 myPersonTripWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2284 new FXLabel(demandMatrix, "walks", nullptr, GUIDesignViewSettingsLabel1);
2286 myWalkWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2288 new FXLabel(demandMatrix, "rides", nullptr, GUIDesignViewSettingsLabel1);
2290 myRideWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2292 new FXLabel(demandMatrix, "transport", nullptr, GUIDesignViewSettingsLabel1);
2294 myTransportWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2296 new FXLabel(demandMatrix, "tranship", nullptr, GUIDesignViewSettingsLabel1);
2298 myTranshipWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2300 // stops
2301 FXMatrix* stopMatrix = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2302 new FXLabel(stopMatrix, "stop", nullptr, GUIDesignViewSettingsLabel1);
2304 new FXLabel(stopMatrix, "waypoint", nullptr, GUIDesignViewSettingsLabel1);
2306 new FXLabel(stopMatrix, "stop (persons)", nullptr, GUIDesignViewSettingsLabel1);
2308 new FXLabel(stopMatrix, "stop (containers)", nullptr, GUIDesignViewSettingsLabel1);
2310}
2311
2312
2313void
2315 new FXTabItem(tabbook, TL("POIs"), nullptr, GUIDesignViewSettingsTabItemBook1);
2316 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2317 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2318
2319 FXMatrix* m63 = new FXMatrix(verticalFrame, 3, GUIDesignViewSettingsMatrix3);
2320 new FXLabel(m63, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2324 myPOIColorInterpolation = new FXCheckButton(m63, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2325 myPOIColorSettingFrame = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame4);
2326
2327 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2328
2329 FXMatrix* m61 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2330
2331 new FXLabel(m61, TL("POI detail"), nullptr, GUIDesignViewSettingsLabel1);
2333 myPoiDetail->setRange(3, 100);
2334 myPoiDetail->setValue(mySettings->poiDetail);
2335
2336 myPOIUseCustomLayer = new FXCheckButton(m61, TL("Custom Layer"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2339 myPOICustomLayer->setRange(-std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
2341
2342 myPOINamePanel = new NamePanel(m61, this, TL("Show poi id"), mySettings->poiName);
2343 myPOITypePanel = new NamePanel(m61, this, TL("Show poi type"), mySettings->poiType);
2344 myPOITextPanel = new NamePanel(m61, this, TL("Show poi text param"), mySettings->poiText);
2346 myPOITextParamKey->setEditable(true);
2347
2348 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2349
2350 FXMatrix* m62 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2352}
2353
2354
2355void
2357 new FXTabItem(tabbook, TL("Polygons"), nullptr, GUIDesignViewSettingsTabItemBook1);
2358 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2359 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2360
2361 FXMatrix* m63 = new FXMatrix(verticalFrame, 3, GUIDesignViewSettingsMatrix3);
2362 new FXLabel(m63, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2366 myPolyColorInterpolation = new FXCheckButton(m63, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2367 myPolyColorSettingFrame = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame4);
2368
2369 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2370
2371 FXMatrix* m91 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2372
2373 myPolyUseCustomLayer = new FXCheckButton(m91, TL("Custom Layer"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2376 myPolyCustomLayer->setRange(-std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
2378
2379 myPolyNamePanel = new NamePanel(m91, this, TL("Show polygon id"), mySettings->polyName);
2380 myPolyTypePanel = new NamePanel(m91, this, TL("Show polygon types"), mySettings->polyType);
2381 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2382
2384}
2385
2386
2387void
2389 new FXTabItem(tabbook, TL("Selection"), nullptr, GUIDesignViewSettingsTabItemBook1);
2390 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2391 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2392
2393 FXMatrix* m102 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2394 new FXLabel(m102, TL("Default Selection Color"), nullptr, GUIDesignViewSettingsLabel1);
2395 new FXLabel(m102, "", nullptr, GUIDesignViewSettingsLabel1);
2396
2397 new FXLabel(m102, TL("Miscellaneous"), nullptr, GUIDesignViewSettingsLabel1);
2399 new FXLabel(m102, "Edge", nullptr, GUIDesignViewSettingsLabel1);
2401 new FXLabel(m102, "Lane Edge", nullptr, GUIDesignViewSettingsLabel1);
2403 new FXLabel(m102, "Connection", nullptr, GUIDesignViewSettingsLabel1);
2405 new FXLabel(m102, "Prohibition", nullptr, GUIDesignViewSettingsLabel1);
2407 new FXLabel(m102, "Crossing", nullptr, GUIDesignViewSettingsLabel1);
2409 new FXLabel(m102, "Additional", nullptr, GUIDesignViewSettingsLabel1);
2411 new FXLabel(m102, "Route", nullptr, GUIDesignViewSettingsLabel1);
2413 new FXLabel(m102, "Vehicle", nullptr, GUIDesignViewSettingsLabel1);
2415 new FXLabel(m102, "Person", nullptr, GUIDesignViewSettingsLabel1);
2417 new FXLabel(m102, "PersonPlan", nullptr, GUIDesignViewSettingsLabel1);
2419 new FXLabel(m102, "edgeData", nullptr, GUIDesignViewSettingsLabel1);
2421}
2422
2423
2424void
2426 new FXTabItem(tabbook, TL("Data"), nullptr, GUIDesignViewSettingsTabItemBook1);
2427 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2428 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2429 // ... color settings
2430 FXVerticalFrame* verticalFrame2 = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame6);
2431 FXMatrix* m111 = new FXMatrix(verticalFrame2, 4, GUIDesignViewSettingsMatrix3);
2432 new FXLabel(m111, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2435 myDataColorInterpolation = new FXCheckButton(m111, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2436 myDataColorSettingFrame = new FXVerticalFrame(verticalFrame2, GUIDesignViewSettingsVerticalFrame4);
2437 myDataParamKey = new FXComboBox(m111, 1, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignComboBoxFixed(100));
2438 myDataParamKey->setEditable(true);
2439 myDataParamKey->disable();
2441
2442 // rainbow settings
2443 myDataRainbowPanel = new RainbowPanel(verticalFrame2, this, mySettings->dataValueRainBow);
2444
2445 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2446
2447 // data scale settings
2448 FXVerticalFrame* verticalFrameDataScale = new FXVerticalFrame(verticalFrame2, GUIDesignViewSettingsVerticalFrame6);
2449 FXMatrix* matrixDataScale = new FXMatrix(verticalFrameDataScale, 4, GUIDesignViewSettingsMatrix3);
2450 new FXLabel(matrixDataScale, TL("Scale size"), nullptr, GUIDesignViewSettingsLabel1);
2451 myDataScaleMode = new MFXComboBoxIcon(matrixDataScale, nullptr, true, GUIDesignComboBoxVisibleItems,
2453 myDataScaleInterpolation = new FXCheckButton(matrixDataScale, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2454 myDataScaleParamKey = new FXComboBox(matrixDataScale, 1, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignComboBoxStatic);
2455 myDataScaleParamKey->setEditable(true);
2456 myDataScaleParamKey->disable();
2457 myDataScaleSettingFrame = new FXVerticalFrame(verticalFrameDataScale, GUIDesignViewSettingsVerticalFrame4);
2459 new FXHorizontalSeparator(verticalFrame2, GUIDesignHorizontalSeparator);
2460
2461 FXMatrix* m112 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix1);
2462
2463 new FXLabel(m112, TL("Exaggerate edgeRelation width by"), nullptr, GUIDesignViewSettingsLabel1);
2465 myEdgeRelationUpscaleDialer->setRange(0, 1000000);
2467
2468 new FXLabel(m112, TL("Exaggerate tazRelation width by"), nullptr, GUIDesignViewSettingsLabel1);
2470 myTazRelationUpscaleDialer->setRange(0, 1000000);
2472
2473 // text decoration
2474 myDataValuePanel = new NamePanel(m112, this, TL("Show data color value"), mySettings->dataValue);
2475}
2476
2477
2478void
2480 new FXTabItem(tabbook, TL("Legend"), nullptr, GUIDesignViewSettingsTabItemBook1);
2481 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2482 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2483
2484 FXMatrix* m72 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2485 myShowSizeLegend = new FXCheckButton(m72, TL("Show Size Legend"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2487 new FXLabel(m72, "");
2488 myShowColorLegend = new FXCheckButton(m72, TL("Show Edge Color Legend"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2490 new FXLabel(m72, "");
2491 myShowVehicleColorLegend = new FXCheckButton(m72, TL("Show Vehicle Color Legend"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2493 new FXLabel(m72, "");
2494}
2495
2496
2497void
2499 new FXTabItem(tabbook, "openGL", nullptr, GUIDesignViewSettingsTabItemBook1);
2500 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2501 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2502 FXMatrix* m90 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2503 new FXLabel(m90, TL("UI Scaling"), nullptr, GUIDesignViewSettingsLabel1);
2504 myUIScale = new FXRealSpinner(m90, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2505 myUIScale->setValue(getApp()->reg().readRealEntry("SETTINGS", "uiscale", 1));
2506 FXMatrix* m80 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2507 myTrueZ = new FXCheckButton(m80, "Draw all objects at their true Z-level", this, MID_SIMPLE_VIEW_COLORCHANGE);
2508 myTrueZ->setCheck(mySettings->trueZ);
2509 FXMatrix* m81 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2510 new FXLabel(m81, TL("Combobox max rows"), nullptr, GUIDesignViewSettingsLabel1);
2511 myComboRows = new FXRealSpinner(m81, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2513 FXMatrix* m82 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2514 myDisableHideByZoom = new FXCheckButton(m82, TL("Disable hide by zoom"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2515 myDisableHideByZoom->setHelpText(TL("Disable hiding edges with high zoom out"));
2517 FXMatrix* m83 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2518 myDither = new FXCheckButton(m83, TL("Dither"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2519 myDither->setCheck(mySettings->dither);
2520 FXMatrix* m84 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2521 myFPS = new FXCheckButton(m84, "FPS", this, MID_SIMPLE_VIEW_COLORCHANGE);
2522 myFPS->setCheck(mySettings->fps);
2523 FXMatrix* m85 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2524 myDrawBoundaries = new FXCheckButton(m85, TL("Draw boundaries"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2526 FXMatrix* m86 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2527 myForceDrawForRectangleSelection = new FXCheckButton(m86, TL("Force draw for rectangle selection"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2529 FXMatrix* m87 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2530 myDisableDottedContours = new FXCheckButton(m87, TL("Disable dotted contours during selection/deletion"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2532 FXMatrix* m88 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2533 myRecalculateBoundaries = GUIDesigns::buildFXButton(m88, TL("Recalculate boundaries"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE,
2534 (BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT), 0, 0, 0, 0, 20, 20, 4, 4);
2535 FXMatrix* m89 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2536 myGeometryIndicesPanel = new NamePanel(m89, this, TL("Show geometry point indices"), mySettings->geometryIndices);
2537}
2538
2539
2540void
2542 myFrame3D = new FXTabItem(tabbook, TL("3D view"), nullptr, GUIDesignViewSettingsTabItemBook1);
2543 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2544 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2545
2546 FXMatrix* m82 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2547 myIgnoreColorSchemeFor3DVehicles = new FXCheckButton(m82, TL("Ignore color scheme for vehicles"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2549 myShow3DTLSLinkMarkers = new FXCheckButton(m82, TL("Show TLS link markers"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2551 //FXMatrix* m83 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2552 myShow3DTLSDomes = new FXCheckButton(m82, TL("Show domes around TLS models from decals"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2554 //FXMatrix* m84 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2555 myGenerate3DTLSModels = new FXCheckButton(m82, TL("Show auto-generated TLS models"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2557 myShow3DHeadUpDisplay = new FXCheckButton(m82, TL("Show head-up display"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2559
2560 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2561
2562 FXMatrix* m2 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2563 new FXLabel(m2, TL("Sun brightness"), nullptr, GUIDesignViewSettingsLabel1);
2565 myLight3DFactor->setRange(0, 255);
2567 /*
2568 new FXLabel(m2, "Ambient", nullptr, GUIDesignViewSettingsLabel1);
2569 myAmbient3DLight = new FXColorWell(m2, MFXUtils::getFXColor(mySettings->ambient3DLight), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsColorWell);
2570 myAmbient3DLight->setOpaqueOnly(true);
2571 new FXLabel(m2, "Diffuse", nullptr, GUIDesignViewSettingsLabel1);
2572 myDiffuse3DLight = new FXColorWell(m2, MFXUtils::getFXColor(mySettings->diffuse3DLight), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsColorWell);
2573 myDiffuse3DLight->setOpaqueOnly(true);
2574 */
2575 new FXLabel(m2, TL("Sky color"), nullptr, GUIDesignViewSettingsLabel1);
2577 mySkyColor->setOpaqueOnly(true);
2578
2579#ifdef HAVE_OSG
2581#else
2582 myFrame3D->disable();
2583#endif
2584}
2585
2586
2587void
2588GUIDialog_ViewSettings::buildButtons(FXVerticalFrame* contentFrame) {
2589 FXHorizontalFrame* horizontalFrameButtons = new FXHorizontalFrame(contentFrame, GUIDesignViewSettingsHorizontalFrame2);
2590 FXButton* OK = GUIDesigns::buildFXButton(horizontalFrameButtons, TL("&OK"), "", "", nullptr, this, MID_SETTINGS_OK, GUIDesignViewSettingsButton2);
2591 GUIDesigns::buildFXButton(horizontalFrameButtons, TL("&Cancel"), "", "", nullptr, this, MID_SETTINGS_CANCEL, GUIDesignViewSettingsButton3);
2592 OK->setFocus();
2593}
2594
2595/****************************************************************************/
long long int SUMOTime
Definition GUI.h:36
@ MID_SIMPLE_VIEW_NAMECHANGE
Informs the dialog about switching to another scheme.
Definition GUIAppEnum.h:633
@ MID_SIMPLE_VIEW_CLEAR_DECALS
For the clear-decals - button.
Definition GUIAppEnum.h:649
@ MID_SIMPLE_VIEW_SAVE
For the save-to-db - button.
Definition GUIAppEnum.h:635
@ MID_SIMPLE_VIEW_IMPORT
For the import-from-file - button.
Definition GUIAppEnum.h:641
@ MID_SIMPLE_VIEW_EXPORT
For the export-to-file - button.
Definition GUIAppEnum.h:639
@ MID_SIMPLE_VIEW_DELETE
For the delete - button.
Definition GUIAppEnum.h:637
@ MID_SIMPLE_VIEW_LOAD_DECALS_XML
For the load-decals - button.
Definition GUIAppEnum.h:645
@ MID_SIMPLE_VIEW_LOAD_DECAL
For the load-decals - button.
Definition GUIAppEnum.h:643
@ MID_SETTINGS_OK
Ok-button was pushed.
Definition GUIAppEnum.h:553
@ MID_SETTINGS_CANCEL
Cancel-button was pushed.
Definition GUIAppEnum.h:555
@ MID_SIMPLE_VIEW_SIZECHANGE
Informs the dialog about a size value's change.
Definition GUIAppEnum.h:631
@ MID_SIMPLE_VIEW_COLORCHANGE
Informs the dialog about a value's change.
Definition GUIAppEnum.h:629
@ MID_SIMPLE_VIEW_SAVE_DECALS_XML
For the save-decals - button.
Definition GUIAppEnum.h:647
GUICompleteSchemeStorage gSchemeStorage
#define GUIDesignViewSettingsColorWell2
Definition GUIDesigns.h:616
#define GUIDesignViewSettingsMatrix3
Definition GUIDesigns.h:573
#define GUIDesignViewSettingsMainDialog
Definition GUIDesigns.h:544
#define GUIDesignViewSettingsMatrix5
Definition GUIDesigns.h:577
#define GUIDesignComboBoxStatic
Combo box static (not editable)
Definition GUIDesigns.h:298
#define GUIDesignViewSettingsComboBox1
Combo boxes.
Definition GUIDesigns.h:580
#define GUIDesignViewSettingsHorizontalFrame3
Definition GUIDesigns.h:566
#define GUIDesignViewSettingsVerticalFrame6
Definition GUIDesigns.h:559
#define GUIDesignViewSettingsHorizontalFrame2
Definition GUIDesigns.h:564
#define GUIDesignViewSettingsButton2
Definition GUIDesigns.h:605
#define GUIDesignButtonToolbar
little button with icon placed in navigation toolbar
Definition GUIDesigns.h:144
#define GUIDesignViewSettingsMatrix1
Matrix.
Definition GUIDesigns.h:569
#define GUIDesignComboBoxFixed(customWidth)
comboBox with thick frame, fixed width
Definition GUIDesigns.h:307
#define GUIDesignViewSettingsColorWell1
Color wells.
Definition GUIDesigns.h:614
#define GUIDesignViewSettingsButton4
Definition GUIDesigns.h:609
#define GUIDesignViewSettingsDialog
Definition GUIDesigns.h:546
#define GUIDesignViewSettingsMatrix4
Definition GUIDesigns.h:575
#define GUIDesignViewSettingsSpinDial2
Definition GUIDesigns.h:587
#define GUIDesignViewSettingsButton5
Definition GUIDesigns.h:611
#define GUIDesignViewSettingsHorizontalFrame1
Horizontal frames.
Definition GUIDesigns.h:562
#define GUIDesignViewSettingsSpinDial1
Definition GUIDesigns.h:585
#define GUIDesignViewSettingsVerticalFrame5
Definition GUIDesigns.h:557
#define GUIDesignViewSettingsMatrix2
Definition GUIDesigns.h:571
#define GUIDesignViewSettingsLabel1
Label.
Definition GUIDesigns.h:595
#define GUIDesignComboBoxVisibleItems
Definition GUIDesigns.h:64
#define GUIDesignViewSettingsTabBook1
Tab books.
Definition GUIDesigns.h:590
#define GUIDesignViewSettingsButton3
Definition GUIDesigns.h:607
#define GUIDesignMatrixViewSettings
FXMatrix used to pack values in Viewsettings.
Definition GUIDesigns.h:374
#define GUIDesignViewSettingsVerticalFrame2
Definition GUIDesigns.h:551
#define GUIDesignViewSettingsVerticalFrame3
Definition GUIDesigns.h:553
#define GUIDesignViewSettingsColorWell
ColorWell.
Definition GUIDesigns.h:583
#define GUIDesignHorizontalSeparator
Definition GUIDesigns.h:494
#define GUIDesignViewSettingsVerticalFrame4
Definition GUIDesigns.h:555
#define GUIDesignViewSettingsTabItemBook1
Definition GUIDesigns.h:592
#define GUIDesignViewSettingsVerticalFrame1
vertical frames
Definition GUIDesigns.h:549
#define GUIDesignViewSettingsLabel2
Definition GUIDesigns.h:597
#define GUIDesignViewSettingsTextField1
textFields
Definition GUIDesigns.h:600
#define GUIDesignCheckButtonViewSettings
CheckButton for Frames without thick extended over the frame.
Definition GUIDesigns.h:209
#define GUIDesignViewSettingsButton1
Buttons.
Definition GUIDesigns.h:603
FXDEFMAP(GUIDialog_ViewSettings::SizePanel) GUIDialog_SizeMap[]
GUIGlObjectType
@ GLO_TAZRELDATA
TAZ relation data.
@ GLO_JUNCTION
a junction
@ GLO_LANE
a lane
@ GLO_CONTAINER
a container
@ GLO_ADDITIONALELEMENT
reserved GLO type for packing all additionals elements
@ GLO_VEHICLE
a vehicle
@ GLO_PERSON
a person
@ GLO_POI
poi (over view, geo and lane)
@ GLO_POLYGON
polygon
GUIViewObjectsHandler gViewObjectsHandler
FXString gCurrentFolder
The folder used as last.
GUIIcon
An enumeration of icons used by the gui applications.
Definition GUIIcons.h:33
@ OPEN
open icons
@ SAVE_DATABASE
@ SAVE
save icons
#define TL(string)
Definition MsgHandler.h:304
std::string time2string(SUMOTime t, bool humanReadable)
convert SUMOTime to string (independently of global format setting)
Definition SUMOTime.cpp:91
@ SUMO_TAG_DELAY
@ SUMO_TAG_BREAKPOINT
@ SUMO_TAG_VIEWSETTINGS_DECAL
@ SUMO_TAG_VIEWSETTINGS
@ SUMO_TAG_VIEWSETTINGS_LIGHT
@ SUMO_ATTR_VALUE
@ SUMO_ATTR_CENTER_Y
@ SUMO_ATTR_INDEX
@ SUMO_ATTR_LAYER
A layer number.
@ SUMO_ATTR_HEIGHT
@ SUMO_ATTR_TYPE
@ SUMO_ATTR_CENTER_Z
@ SUMO_ATTR_CENTER_X
@ SUMO_ATTR_WIDTH
@ SUMO_ATTR_TIME
trigger: the time of the step
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition ToString.h:46
bool contains(const std::string &name) const
Returns the information whether a setting with the given name is stored.
GUIVisualizationSettings & get(const std::string &name)
Returns the named scheme.
void remove(const std::string name)
Removes the setting with the given name.
const std::vector< std::string > & getNames() const
Returns a list of stored settings names.
void add(const GUIVisualizationSettings &scheme)
Adds a visualization scheme.
int getNumInitialSettings() const
Returns the number of initial settings.
void writeSettings(FXApp *app)
Writes the current scheme into the registry.
static FXButton * buildFXButton(FXComposite *p, const std::string &text, const std::string &tip, const std::string &help, FXIcon *ic, FXObject *tgt, FXSelector sel, FXuint opts=BUTTON_NORMAL, FXint x=0, FXint y=0, FXint w=0, FXint h=0, FXint pl=DEFAULT_PAD, FXint pr=DEFAULT_PAD, FXint pt=DEFAULT_PAD, FXint pb=DEFAULT_PAD)
build button
void writeXML(OutputDevice &dev)
write the settings to the given device
GUIVisualizationTextSettings getSettings()
get settings
FXColorWell * myBGColorWell
BGColor well.
void update(const GUIVisualizationTextSettings &settings)
update
FXCheckButton * myCheck
check button
FXCheckButton * myConstSizeCheck
const size check
NamePanel(FXMatrix *parent, GUIDialog_ViewSettings *target, const std::string &title, const GUIVisualizationTextSettings &settings)
constructor
FXCheckButton * mySelectedCheck
draw only for selected?
void update(const GUIVisualizationRainbowSettings &settings)
update
GUIVisualizationRainbowSettings getSettings()
get settings
RainbowPanel(FXComposite *parent, GUIDialog_ViewSettings *target, const GUIVisualizationRainbowSettings &settings)
constructor
FXCheckButton * myCheckSelected
check selected button
long onCmdSizeChange(FXObject *obj, FXSelector sel, void *ptr)
FXRealSpinner * myMinSizeDial
min size dial
void update(const GUIVisualizationSizeSettings &settings)
update
GUIVisualizationSizeSettings getSettings()
get settings
SizePanel(FXMatrix *parent, GUIDialog_ViewSettings *target, const GUIVisualizationSizeSettings &settings, GUIGlObjectType type)
FOX Declaration.
FXRealSpinner * myExaggerateDial
exaggerate dial
The dialog to change the view (gui) settings.
long onCmdExportSetting(FXObject *, FXSelector, void *data)
Called if the settings shall be exported into a file.
FXVerticalFrame * myVehicleColorSettingFrame
void buildBackgroundFrame(FXTabBook *tabbook)
build frames
FXCheckButton * myVehicleColorInterpolation
std::string getCurrentScheme() const
Returns the name of the currently chosen scheme.
MFXComboBoxIcon * myPolyColorMode
Polygons.
FXCheckButton * myShowPedestrianNetwork
FXVerticalFrame * myDataColorSettingFrame
GUISUMOAbstractView * myParent
The parent view (which settings are changed)
std::vector< FXColorWell * > myPolyColors
MFXComboBoxIcon * myJunctionColorMode
junctions
FXVerticalFrame * myJunctionColorSettingFrame
void buildSelectionFrame(FXTabBook *tabbook)
void buildOpenGLFrame(FXTabBook *tabbook)
long onCmdNameChange(FXObject *, FXSelector, void *)
Called if the name of the scheme was changed.
FXVerticalFrame * myContainerColorSettingFrame
FXRealSpinner * myLaneWidthUpscaleDialer
std::vector< FXColorWell * > myPOIColors
FXColorWell * myBusStopColor
additional colors
std::vector< FXButton * > myLaneScaleButtons
FXCheckButton * myDisableDottedContours
std::vector< FXColorWell * > myPersonColors
MFXComboBoxIcon * myVehicleShapeDetail
std::vector< FXButton * > myDataButtons
std::vector< FXRealSpinner * > myVehicleScales
std::vector< FXRealSpinner * > myPolyThresholds
FXCheckButton * myPOIColorInterpolation
std::vector< FXButton * > myContainerButtons
std::vector< FXRealSpinner * > myJunctionThresholds
FXCheckButton * myVehicleScaleInterpolation
FXMatrix * rebuildColorMatrix(FXVerticalFrame *frame, std::vector< FXColorWell * > &colors, std::vector< FXRealSpinner * > &thresholds, std::vector< FXButton * > &buttons, FXCheckButton *interpolation, GUIColorScheme &scheme)
Rebuilds manipulators for the current coloring scheme.
void buildJunctionsFrame(FXTabBook *tabbook)
std::vector< FXRealSpinner * > myPersonThresholds
long onKeyPress(FXObject *o, FXSelector sel, void *data)
keyboard functions
void show()
show view settings dialog
std::vector< FXButton * > myJunctionButtons
FXCheckButton * myShowVehicleColorLegend
void buildStreetsFrame(FXTabBook *tabbook)
FXRealSpinner * myTripWidth
demand widths
FXCheckButton * mySaveViewPort
load/save-menu
void buildVehiclesFrame(FXTabBook *tabbook)
FXVerticalFrame * myDataScaleSettingFrame
FXCheckButton * myIgnoreColorSchemeFor3DVehicles
std::vector< FXColorWell * > myJunctionColors
MFXComboBoxIcon * myLaneEdgeScaleMode
... lane scaler
FXCheckButton * myPersonColorInterpolation
long onCmdLoadXMLDecals(FXObject *, FXSelector, void *data)
Called if the decals shall be loaded from a file.
FXColorWell * mySelectionColor
selection colors
RainbowPanel * myEdgeRainbowPanel
rainbow panels
FXVerticalFrame * myLaneScaleSettingFrame
std::vector< FXColorWell * > myVehicleColors
FXMatrix * rebuildScaleMatrix(FXVerticalFrame *frame, std::vector< FXRealSpinner * > &scales, std::vector< FXRealSpinner * > &thresholds, std::vector< FXButton * > &buttons, FXCheckButton *interpolation, GUIScaleScheme &scheme)
Rebuilds manipulators for the current scaling scheme.
std::vector< FXRealSpinner * > myVehicleThresholds
void setCurrentScheme(const std::string &)
Sets the named scheme as the current.
FXCheckButton * myPolyColorInterpolation
std::vector< FXButton * > myPersonButtons
FXCheckButton * myJunctionColorInterpolation
FXRealSpinner * myTazRelationUpscaleDialer
void buildHeader(FXVerticalFrame *contentFrame)
build header
long onCmdCancel(FXObject *, FXSelector, void *)
Called if the Cancel-button was pressed.
FXVerticalFrame * myLaneColorSettingFrame
MFXComboBoxIcon * myPersonShapeDetail
FXCheckButton * myLaneScaleInterpolation
void buildDemandFrame(FXTabBook *tabbook)
long onCmdImportSetting(FXObject *, FXSelector, void *data)
Called if the settings shall be read from a file.
FXVerticalFrame * myVehicleScaleSettingFrame
long onUpdImportSetting(FXObject *, FXSelector, void *data)
Called when updating the button that allows to read settings from a file.
FXCheckButton * myDataScaleInterpolation
void setCurrent(GUIVisualizationSettings *settings)
Sets current settings (called if reopened)
void rebuildColorMatrices(bool doCreate=false)
Rebuilds color changing dialogs after choosing another coloring scheme.
void saveDecals(OutputDevice &dev) const
Writes the currently used decals into a file.
FXVerticalFrame * myPolyColorSettingFrame
std::vector< FXRealSpinner * > myLaneScales
void loadSettings(const std::string &file)
Loads a scheme from a file.
long onCmdClearDecals(FXObject *, FXSelector, void *data)
Called if the decals shall be cleared.
std::vector< FXRealSpinner * > myDataThresholds
FXCheckButton * myDataColorInterpolation
FXCheckButton * myDrawCrossingsAndWalkingAreas
std::vector< FXButton * > myLaneButtons
FXCheckButton * myLaneColorInterpolation
FXVerticalFrame * myPersonColorSettingFrame
void buildContainersFrame(FXTabBook *tabbook)
MFXComboBoxIcon * myVehicleColorMode
Vehicles.
void buildLegendFrame(FXTabBook *tabbook)
std::vector< FXRealSpinner * > myVehicleScaleThresholds
long onCmdLoadDecal(FXObject *, FXSelector, void *data)
Called if the decal shall be loaded from a file.
FXCheckButton * myContainerColorInterpolation
std::vector< FXColorWell * > myLaneColors
SizePanel * myVehicleSizePanel
size panels
GUIVisualizationSettings * mySettings
The current settings.
long onCmdDeleteSetting(FXObject *, FXSelector, void *data)
Called if the settings shall be deleted.
void loadDecals(const std::string &file)
Loads decals from a file.
FXVerticalFrame * myPOIColorSettingFrame
long onCmdColorChange(FXObject *, FXSelector, void *)
Called if something (color, width, etc.) has been changed.
std::vector< FXColorWell * > myContainerColors
std::vector< FXRealSpinner * > myDataScaleThresholds
FXCheckButton * myForceDrawForRectangleSelection
std::vector< FXButton * > myDataScaleButtons
GUISUMOAbstractView * getSUMOAbstractView()
get GUISUMOAbstractView parent
MFXComboBoxIcon * myContainerColorMode
Containers.
std::vector< FXRealSpinner * > myLaneScaleThresholds
FXCheckButton * myDither
openGL
MFXComboBoxIcon * myContainerShapeDetail
GUIVisualizationSettings myBackup
A backup of the settings (used if the "Cancel" button is pressed)
std::vector< FXRealSpinner * > myContainerThresholds
void buildPersonsFrame(FXTabBook *tabbook)
MFXComboBoxIcon * myPOIColorMode
POIs.
void updatePOIParams()
reload known POI parameters
std::vector< FXRealSpinner * > myDataScales
FXCheckButton * myShowLane2Lane
buttons
std::vector< FXColorWell * > myDataColors
long onCmdOk(FXObject *, FXSelector, void *)
Called if the OK-button was pressed.
long onCmdSaveSetting(FXObject *, FXSelector, void *data)
Called if the settings shall be saved into the registry.
MFXComboBoxIcon * myLaneEdgeColorMode
... lane colorer
long onCmdSaveXMLDecals(FXObject *, FXSelector, void *data)
Called if the decals shall be saved to a file.
void buildAdditionalsFrame(FXTabBook *tabbook)
MFXComboBoxIcon * myDataScaleMode
Data scaler.
void buildPOIsFrame(FXTabBook *tabbook)
void buildPolygonsFrame(FXTabBook *tabbook)
void buildDataFrame(FXTabBook *tabbook)
long onUpdSaveSetting(FXObject *, FXSelector, void *data)
Called when updating the button that allows to save the settings into the registry.
void buildButtons(FXVerticalFrame *contentFrame)
build buttons
MFXComboBoxIcon * myVehicleScaleMode
vehicle scaler
std::vector< FXButton * > myVehicleScaleButtons
MFXComboBoxIcon * myPersonColorMode
Persons.
bool updateColorRanges(FXObject *sender, std::vector< FXColorWell * >::const_iterator colIt, std::vector< FXColorWell * >::const_iterator colEnd, std::vector< FXRealSpinner * >::const_iterator threshIt, std::vector< FXRealSpinner * >::const_iterator threshEnd, std::vector< FXButton * >::const_iterator buttonIt, GUIColorScheme &scheme)
update color ranges
std::vector< FXRealSpinner * > myLaneThresholds
long onUpdDeleteSetting(FXObject *, FXSelector, void *data)
Called when updating the button that allows to delete settings.
bool updateScaleRanges(FXObject *sender, std::vector< FXRealSpinner * >::const_iterator colIt, std::vector< FXRealSpinner * >::const_iterator colEnd, std::vector< FXRealSpinner * >::const_iterator threshIt, std::vector< FXRealSpinner * >::const_iterator threshEnd, std::vector< FXButton * >::const_iterator buttonIt, GUIScaleScheme &scheme)
update scale ranges
void build3DFrame(FXTabBook *tabbook)
long onUpdExportSetting(FXObject *, FXSelector, void *data)
Called when updating the button that allows to export settings into a file.
MFXComboBoxIcon * myDataColorMode
Data color.
std::vector< FXButton * > myPOIButtons
NamePanel * myEdgeNamePanel
name panels
FXRealSpinner * myEdgeRelationUpscaleDialer
void updateVehicleParams()
reload known vehicle parameters
std::vector< FXRealSpinner * > myPOIThresholds
std::vector< FXButton * > myPolyButtons
std::vector< FXButton * > myVehicleButtons
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
Persists window position in the registry.
const std::vector< double > & getThresholds() const
void setColor(const int pos, const T &color)
void setThreshold(const int pos, const double threshold)
const std::vector< std::string > & getNames() const
void removeColor(const int pos)
const std::string & getName() const
const std::vector< T > & getColors() const
int addColor(const T &color, const double threshold, const std::string &name="")
void setInterpolated(const bool interpolate, double interpolationStart=0.f)
bool isInterpolated() const
bool allowsNegativeValues() const
void fill(MFXComboBoxIcon &cb)
Fills the given combobox with the names of available colorings.
MFXComboBoxIcon * getColoringSchemesCombo()
get coloring schemes combo
virtual void buildColorRainbow(const GUIVisualizationSettings &, GUIColorScheme &, int, GUIGlObjectType, const GUIVisualizationRainbowSettings &)
recalibrate color scheme according to the current value range
virtual std::vector< std::string > getMeanDataAttrs(const std::string &meanDataID) const
return list of available attributes for the given meanData id
void setDelay(double delay)
Sets the delay of the parent application.
GUIDialog_EditViewport * getViewportEditor()
get the viewport and create it on first access
std::vector< Decal > & getDecals()
The list of decals to show.
double getDelay() const
Returns the delay of the parent application.
virtual std::vector< std::string > getEdgeLaneParamKeys(bool) const
return list of available edge parameters
virtual std::vector< std::string > getVehicleParamKeys(bool) const
return list of available vehicle parameters
virtual void drawPedestrianNetwork(const GUIVisualizationSettings &) const
Draw (or not) the JuPedSim pedestrian network.
virtual std::vector< std::string > getMeanDataIDs() const
return list of loaded edgeData ids (being computed in the current simulation)
virtual void recalculateBoundaries()
recalculate boundaries
FXMutex & getDecalsLockMutex()
The mutex to use before accessing the decals list in order to avoid thread conflicts.
virtual bool is3DView() const
return whether this is a 3D view
virtual std::vector< std::string > getPOIParamKeys() const
return list of available vehicle parameters
virtual void changePedestrianNetworkColor(const GUIVisualizationSettings &) const
Change the color of the JuPedSim pedestrian network.
void setBreakpoints(const std::vector< SUMOTime > &breakpoints)
Sets the breakpoints of the parent application.
virtual bool setColorScheme(const std::string &)
set color scheme
virtual std::vector< std::string > getRelDataAttrs() const
return list of loaded edgeRelation and tazRelation attributes
virtual const std::vector< SUMOTime > retrieveBreakpoints() const
retrieve breakpoints if provided by the application
void remove(GUIDialog_EditViewport *)
remove viewport
virtual std::vector< std::string > getEdgeDataAttrs() const
return list of loaded edgeData attributes
An XML-handler for visualisation schemes.
double getDelay() const
Returns the parsed delay.
bool hasDecals() const
Returns whether any decals have been parsed.
const std::vector< std::string > & addSettings(GUISUMOAbstractView *view=0) const
Adds the parsed settings to the global list of settings.
void applyViewport(GUISUMOAbstractView *view) const
Sets the viewport which has been parsed.
const std::vector< SUMOTime > & getBreakpoints() const
Returns the parsed breakpoints.
const std::vector< GUISUMOAbstractView::Decal > & getDecals() const
Returns the parsed decals.
GUIGlObjectType recomputeBoundaries
recompute boundaries
Stores the information about how to visualize structures.
GUIVisualizationTextSettings addName
GUIVisualizationTextSettings tlsPhaseIndex
bool poiUseCustomLayer
whether the rendering layer of POIs should be overriden
GUIVisualizationTextSettings vehicleName
GUIVisualizationTextSettings junctionName
RGBColor backgroundColor
The background color to use.
GUIVisualizationSizeSettings vehicleSize
GUIVisualizationSizeSettings containerSize
bool showBlinker
Information whether vehicle blinkers shall be drawn.
GUIVisualizationTextSettings internalEdgeName
bool showPedestrianNetwork
Flag for visualizing the pedestrian network generated for JuPedSim.
RGBColor skyColor
sky background color
double polyCustomLayer
the custom layer for polygons
GUIVisualizationSizeSettings junctionSize
static const std::string SCHEME_NAME_DATA_ATTRIBUTE_NUMERICAL
bool drawBoundaries
enable or disable draw boundaries
static const std::string SCHEME_NAME_EDGEDATA_NUMERICAL
bool showBikeMarkings
Information whether bicycle lane marking shall be drawn.
std::string edgeDataID
id for coloring by live edgeData
GUIScaler laneScaler
The lane scaler.
GUIVisualizationTextSettings edgeScaleValue
bool dither
Information whether dithering shall be enabled.
GUIColorer vehicleColorer
The vehicle colorer.
bool disableHideByZoom
disable hide by zoom
std::string relDataScaleAttr
key for scaling by edgeRelation / tazRelation attribute
static const std::string SCHEME_NAME_EDGEDATA_LIVE
GUIVisualizationTextSettings personValue
bool showLinkRules
Information whether link rules (colored bars) shall be drawn.
GUIScaler dataScaler
The size scaling settings for data elements.
GUIVisualizationRainbowSettings vehicleValueRainBow
GUIVisualizationTextSettings poiType
GUIVisualizationSizeSettings addSize
std::string name
The name of this setting.
GUIColorer edgeColorer
The mesoscopic edge colorer.
int containerQuality
The quality of container drawing.
RGBColor pedestrianNetworkColor
The color of the pedestrian network generated for JuPedSim.
GUIVisualizationTextSettings internalJunctionName
GUIVisualizationTextSettings vehicleScaleValue
GUIVisualizationSizeSettings poiSize
bool drawJunctionShape
whether the shape of the junction should be drawn
std::string edgeData
key for coloring by edgeData
GUIVisualizationTextSettings geometryIndices
GUIVisualizationTextSettings dataValue
bool show3DTLSDomes
whether the semi-transparent domes around 3D TL models should be drawn
bool realisticLinkRules
Information whether link rules (colored bars) shall be drawn with a realistic color scheme.
bool trueZ
drawl all objects according to their z data
int personQuality
The quality of person drawing.
GUIColorer poiColorer
The POI colorer.
GUIVisualizationWidthSettings widthSettings
width settings
GUIVisualizationTextSettings poiName
std::string vehicleScaleParam
key for scaling by vehicle parameter
bool showParkingInfo
Set whether parking related information should be shown.
GUIVisualizationTextSettings vehicleValue
bool disableDottedContours
flag for disable dotted contours in netedit
GUIColorer polyColorer
The polygon colorer.
int vehicleQuality
The quality of vehicle drawing.
GUIVisualizationTextSettings drawLinkJunctionIndex
bool generate3DTLSModels
whether 3D TLS models should be generated automatically
static const std::string SCHEME_NAME_LANE_PARAM_NUMERICAL
GUIVisualizationTextSettings addFullName
GUIVisualizationTextSettings edgeValue
bool fps
Information whether frames-per-second should be drawn.
std::string vehicleParam
key for coloring by vehicle parameter
bool showRails
Information whether rails shall be drawn.
GUIVisualizationSizeSettings personSize
double laneWidthExaggeration
The lane exaggeration (upscale thickness)
GUIVisualizationTextSettings cwaEdgeName
GUIVisualizationTextSettings junctionID
std::string vehicleTextParam
key for rendering vehicle textual parameter
bool showLane2Lane
Information whether lane-to-lane arrows shall be drawn.
GUIVisualizationColorSettings colorSettings
color settings
bool showSublanes
Whether to show sublane boundaries.
GUIVisualizationRainbowSettings edgeValueRainBow
checks and thresholds for rainbow coloring
bool showGrid
Information whether a grid shall be shown.
bool scaleLength
Whether vehicle length shall be scaled with length/geometry factor.
bool showVehicleColorLegend
Information whether the vehicle color legend shall be drawn.
double edgeRelWidthExaggeration
The edgeRelation exaggeration (upscale thickness)
bool hideConnectors
flag to show or hide connectors
GUIScaler vehicleScaler
The size scaling settings for vehicles.
static bool UseMesoSim
this should be set at the same time as MSGlobals::gUseMesoSim
GUIColorer personColorer
The person colorer.
void save(OutputDevice &dev) const
Writes the settings into an output device.
bool show3DTLSLinkMarkers
whether the TLS link markers should be drawn
GUIScaleScheme & getLaneEdgeScaleScheme()
Returns the current lane (edge) scaling scheme.
bool polyUseCustomLayer
whether the rendering layer of polygons should be overriden
int getLaneEdgeMode() const
Returns the number of the active lane (edge) coloring scheme.
double poiCustomLayer
the custom layer for POIs
bool showChargingInfo
Set whether the charging search related information should be shown.
RGBColor ambient3DLight
3D material light components
GUIVisualizationRainbowSettings junctionValueRainBow
bool forceDrawForRectangleSelection
flag to force draw for rectangle selection (see drawForRectangleSelection)
bool netedit
Whether the settings are for Netedit.
bool showLaneDirection
Whether to show direction indicators for lanes.
GUIVisualizationRainbowSettings dataValueRainBow
value below which edgeData and edgeRelation data value should not be rendered
bool secondaryShape
whether secondary lane shape shall be drawn
GUIColorScheme & getLaneEdgeScheme()
Returns the current lane (edge) coloring scheme.
GUIScaler edgeScaler
The mesoscopic edge scaler.
bool drawMinGap
Information whether the minimum gap shall be drawn.
GUIVisualizationTextSettings streetName
GUIVisualizationTextSettings poiText
GUIVisualizationTextSettings vehicleText
int getLaneEdgeScaleMode() const
Returns the number of the active lane (edge) scaling scheme.
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
bool show3DHeadUpDisplay
whether to draw the head up display items
GUIColorer laneColorer
The lane colorer.
GUIVisualizationTextSettings polyName
double tazRelWidthExaggeration
The tazRelation exaggeration (upscale thickness)
bool laneShowBorders
Information whether lane borders shall be drawn.
GUIVisualizationTextSettings tlsPhaseName
GUIVisualizationTextSettings edgeName
Setting bundles for optional drawing names with size and color.
bool showSizeLegend
Information whether the size legend shall be drawn.
double laneMinSize
The minimum visual lane width for drawing.
GUIVisualizationTextSettings drawLinkTLIndex
GUIVisualizationTextSettings containerName
static std::map< std::string, std::vector< RGBColor > > RAINBOW_SCHEMES
GUIVisualizationSizeSettings polySize
GUIColorer containerColorer
The container colorer.
double gridXSize
Information about the grid spacings.
bool showBTRange
Information whether the communication range shall be drawn.
bool drawReversed
Whether to draw reversed vehicles in their reversed state.
GUIVisualizationTextSettings personName
bool showColorLegend
Information whether the edge color legend shall be drawn.
std::string poiTextParam
key for rendering poi textual parameter
bool showRouteIndex
Information whether the route index should be shown.
bool drawCrossingsAndWalkingareas
whether crossings and walkingareas shall be drawn
static const std::string SCHEME_NAME_EDGE_PARAM_NUMERICAL
scheme names
bool spreadSuperposed
Whether to improve visualisation of superposed (rail) edges.
std::string relDataAttr
key for coloring by edgeRelation / tazRelation attribute
GUIColorer junctionColorer
The junction colorer.
void copy(const GUIVisualizationSettings &s)
copy all content from another GUIVisualizationSettings (note: DON'T USE in DrawGL functions!...
static const std::string SCHEME_NAME_PARAM_NUMERICAL
std::string edgeParam
key for coloring by edge parameter
bool drawBrakeGap
Information whether the brake gap shall be drawn.
GUIVisualizationTextSettings polyType
int poiDetail
The detail level for drawing POIs.
std::string edgeDataScaling
key for scaling by edgeData
FXint insertIconItem(FXint index, const FXString &text, FXIcon *icon=nullptr, FXColor bgColor=FXRGB(255, 255, 255), void *ptr=nullptr)
insert icon item in the given position
long setCurrentItem(const FXint index, FXbool notify=FALSE)
Set the current item (index is zero-based)
FXint getCurrentItem() const
Get the current item's index.
FXint findItem(const FXString &text) const
find item
void removeItem(FXint index)
Remove this item from the list.
FXint getNumItems() const
Return the number of items in the list.
FXString getText() const
Get the text.
virtual void clearItems()
Remove all items from the list.
std::string getItemText(FXint index) const
Get text for specified item.
void disable()
Disable combo box.
FXint appendIconItem(const FXString &text, FXIcon *icon=nullptr, FXColor bgColor=FXRGB(255, 255, 255), void *ptr=nullptr)
append icon item in the last position
void enable()
Enable combo box.
void fillTable()
fill table
static FXString getFilename2Write(FXWindow *parent, const FXString &header, const FXString &extensions, FXIcon *icon, FXString &currentFolder)
Returns the file name to write.
Definition MFXUtils.cpp:116
static void deleteChildren(FXWindow *w)
Deletes all children of the given window.
Definition MFXUtils.cpp:31
static FXColor getFXColor(const RGBColor &col)
converts FXColor to RGBColor
Definition MFXUtils.cpp:145
static RGBColor getRGBColor(FXColor col)
converts FXColor to RGBColor
Definition MFXUtils.cpp:139
static OptionsCont & getOptions()
Retrieves the options.
Static storage of an output device and its base (abstract) implementation.
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
void close()
Closes the device and removes it from the dictionary.
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
bool closeTag(const std::string &comment="")
Closes the most recently opened tag and optionally adds a comment.
static OutputDevice & getDevice(const std::string &name, bool usePrefix=true)
Returns the described OutputDevice.
unsigned char red() const
Returns the red-amount of the color.
Definition RGBColor.cpp:74
void set(unsigned char r, unsigned char g, unsigned char b, unsigned char a)
assigns new values
Definition RGBColor.cpp:98
static StringBijection< XMLFileExtension > XMLFileExtensions
XML file Extensions.
static StringBijection< ViewSettingsFileExtension > ViewSettingsFileExtensions
view settings file extensions
static bool startsWith(const std::string &str, const std::string prefix)
Checks whether a given string starts with the prefix.
#define UNUSED_PARAMETER(x)
RGBColor vehicleTripColor
color for vehicle trips
RGBColor selectionColor
basic selection color
RGBColor selectedEdgeColor
edge selection color
RGBColor selectedPersonPlanColor
person plan selection color (Rides, Walks, stopPersons...)
RGBColor stopPersonColor
color for stopPersons
RGBColor selectedCrossingColor
crossings selection color
RGBColor chargingStationColor
color for chargingStations
RGBColor selectedLaneColor
lane selection color
RGBColor selectedRouteColor
route selection color (used for routes and vehicle stops)
RGBColor selectedEdgeDataColor
edge data selection color
RGBColor trainStopColorSign
color for trainStops signs
RGBColor transhipColor
color for tranships
RGBColor waypointColor
color for Waypoints
RGBColor containerStopColor
color for containerStops
RGBColor selectedProhibitionColor
prohibition selection color
RGBColor selectedConnectionColor
connection selection color
RGBColor busStopColorSign
color for busStops signs
RGBColor containerStopColorSign
color for containerStop signs
RGBColor selectedAdditionalColor
additional selection color (busStops, Detectors...)
RGBColor transportColor
color for transport
RGBColor busStopColor
color for busStops
RGBColor selectedVehicleColor
vehicle selection color
RGBColor selectedPersonColor
person selection color
RGBColor personTripColor
color for stopPersons
RGBColor stopContainerColor
color for containerStops
RGBColor trainStopColor
color for trainStops
RGBColor chargingStationColorSign
color for chargingStation sign
bool hideMax
whether data above threshold should not be colored
bool setNeutral
whether the scale should be centered at a specific value
bool fixRange
whether the color scale should be fixed to the given min/max values
double minThreshold
threshold below which value should not be colored
std::vector< RGBColor > colors
color steps for the rainbow;
int rainbowScheme
index in the list of color schemes
bool hideMin
whether data below threshold should not be colored
double neutralThreshold
neutral point of scale
double maxThreshold
threshold above which value should not be colored
double exaggeration
The size exaggeration (upscale)
bool constantSize
whether the object shall be drawn with constant size regardless of zoom
double minSize
The minimum size to draw this object.
bool constantSizeSelected
whether only selected objects shall be drawn with constant
RGBColor bgColor
background text color
bool onlySelected
whether only selected objects shall have text drawn
bool constSize
flag to avoid size changes
double personTripWidth
width for person trips