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-2024 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>
43
46
47
48// ===========================================================================
49// FOX callback mapping
50// ===========================================================================
51
56
57FXDEFMAP(GUIDialog_ViewSettings) GUIDialog_ViewSettingsMap[] = {
61 FXMAPFUNC(SEL_COMMAND, MID_SETTINGS_OK, GUIDialog_ViewSettings::onCmdOk),
63 // settings
72 // decals
77};
78
79FXIMPLEMENT(GUIDialog_ViewSettings, FXDialogBox, GUIDialog_ViewSettingsMap, ARRAYNUMBER(GUIDialog_ViewSettingsMap))
80FXIMPLEMENT(GUIDialog_ViewSettings::SizePanel, FXObject, GUIDialog_SizeMap, ARRAYNUMBER(GUIDialog_SizeMap))
81
82// ===========================================================================
83// method definitions
84// ===========================================================================
85
87 FXDialogBox(parent, TL("View Settings"), GUIDesignViewSettingsMainDialog),
88 GUIPersistentWindowPos(this, "VIEWSETTINGS", true, 20, 40, 700, 500, 400, 20),
89 myParent(parent),
90 mySettings(settings),
91 myBackup(settings->name, settings->netedit) {
92 // make a backup copy
93 myBackup.copy(*settings);
94 // create content frame
95 FXVerticalFrame* contentFrame = new FXVerticalFrame(this, GUIDesignViewSettingsVerticalFrame1);
96 // build header
97 buildHeader(contentFrame);
98 // create tabbook for every section
99 FXTabBook* tabbook = new FXTabBook(contentFrame, nullptr, 0, GUIDesignViewSettingsTabBook1);
100 // build background frame
101 buildBackgroundFrame(tabbook);
102 // build streets frame
103 buildStreetsFrame(tabbook);
104 // build vehicles frame
105 buildVehiclesFrame(tabbook);
106 // build persons frame
107 buildPersonsFrame(tabbook);
108 // build containers frame
109 buildContainersFrame(tabbook);
110 // build junctions frame
111 buildJunctionsFrame(tabbook);
112 // build additionals frame
113 buildAdditionalsFrame(tabbook);
114 // build demand frame
115 if (mySettings->netedit) {
116 buildDemandFrame(tabbook);
117 }
118 // build POIs frame
119 buildPOIsFrame(tabbook);
120 // build polygons frame
121 buildPolygonsFrame(tabbook);
122 // build selection frame (only in netedit)
123 if (mySettings->netedit) {
124 buildSelectionFrame(tabbook);
125 }
126 // build data frame (only in netedit)
127 if (mySettings->netedit) {
128 buildDataFrame(tabbook);
129 }
130 // build legend frame
131 buildLegendFrame(tabbook);
132 // build 3D frame
133 build3DFrame(tabbook);
134 if (mySettings->netedit) {
135 myFrame3D->disable();
136 }
137 // build openGL frame
138 buildOpenGLFrame(tabbook);
139 // build buttons
140 buildButtons(contentFrame);
141 // rebuild color matrix
142 rebuildColorMatrices(false);
144 loadWindowPos();
145}
146
147
149 myParent->remove(this);
150 // delete name panels
154 delete myTLSPhaseNamePanel;
155 delete myCwaEdgeNamePanel;
156 delete myStreetNamePanel;
157 delete myEdgeValuePanel;
160 delete myTLIndexPanel;
161 delete myJunctionIDPanel;
162 delete myJunctionNamePanel;
163 delete myVehicleNamePanel;
164 delete myVehicleValuePanel;
166 delete myVehicleTextPanel;
167 delete myPersonNamePanel;
168 delete myPersonValuePanel;
169 delete myAddNamePanel;
170 delete myAddFullNamePanel;
171 delete myPOINamePanel;
172 delete myPOITypePanel;
173 delete myPOITextPanel;
174 delete myPolyNamePanel;
175 delete myPolyTypePanel;
176 delete myEdgeNamePanel;
177 delete myDataValuePanel;
179 // delete size panels
180 delete myVehicleSizePanel;
181 delete myPersonSizePanel;
182 delete myJunctionSizePanel;
183 delete myPOISizePanel;
184 delete myPolySizePanel;
185 delete myAddSizePanel;
186 // delete rainbow panels
187 delete myEdgeRainbowPanel;
189 delete myDataRainbowPanel;
190}
191
192
193void
195 // update buttons that can be changed externally
196 myShowGrid->setCheck(mySettings->showGrid);
199 // create myNewDecalsTable
200 myDecalsTable->create();
202 FXDialogBox::show();
203}
204
205
210
211
212void
214 mySettings = settings;
215 myBackup.copy(*settings);
216 onCmdNameChange(nullptr, 0, nullptr);
217}
218
219
220long
221GUIDialog_ViewSettings::onCmdOk(FXObject*, FXSelector, void*) {
222 getApp()->reg().writeIntEntry("SETTINGS", "comboRows", (int)myComboRows->getValue());
223 hide();
224 return 1;
225}
226
227
228long
229GUIDialog_ViewSettings::onCmdCancel(FXObject*, FXSelector, void*) {
230 hide();
232 myParent->update();
233 return 1;
234}
235
236
237long
238GUIDialog_ViewSettings::onCmdNameChange(FXObject*, FXSelector, void* ptr) {
239 if (ptr != nullptr) {
240 FXString dataS = (char*) ptr; // !!!unicode
241 // check whether this item has been added twice
242 if (dataS.text() == mySchemeName->getItemText(mySchemeName->getNumItems() - 1)) {
243 for (int i = 0; i < mySchemeName->getNumItems() - 1; ++i) {
244 if (dataS.text() == mySchemeName->getItemText(i)) {
246 }
247 }
248 }
249 myBackup.copy(gSchemeStorage.get(dataS.text()));
250 mySettings = &gSchemeStorage.get(dataS.text());
251 }
253
262 if (mySettings->netedit) {
273
280
293
299 }
300
308 myShowRails->setCheck(mySettings->showRails);
324
337 /*
338 myShowLaneChangePreference->setCheck(mySettings->drawLaneChangePreference);
339 */
345
351
356
367
371
372 myPoiDetail->setValue(mySettings->poiDetail);
379
385
389 myDither->setCheck(mySettings->dither);
390 myFPS->setCheck(mySettings->fps);
391 myTrueZ->setCheck(mySettings->trueZ);
399
402
405
406 update();
407 myParent->update();
408 return 1;
409}
410
411
412bool
413GUIDialog_ViewSettings::updateColorRanges(FXObject* sender, std::vector<FXColorWell*>::const_iterator colIt,
414 std::vector<FXColorWell*>::const_iterator colEnd,
415 std::vector<FXRealSpinner*>::const_iterator threshIt,
416 std::vector<FXRealSpinner*>::const_iterator threshEnd,
417 std::vector<FXButton*>::const_iterator buttonIt,
418 GUIColorScheme& scheme) {
419 UNUSED_PARAMETER(threshEnd);
420 int pos = 0;
421 while (colIt != colEnd) {
422 if (scheme.isFixed()) {
423 if (sender == *colIt) {
424 scheme.setColor(pos, MFXUtils::getRGBColor((*colIt)->getRGBA()));
425 }
426 } else {
427 if (sender == *threshIt) {
428 const double val = (*threshIt)->getValue();
429 scheme.setThreshold(pos, val);
430 return false;
431 }
432 if (sender == *colIt) {
433 scheme.setColor(pos, MFXUtils::getRGBColor((*colIt)->getRGBA()));
434 return false;
435 }
436 if (sender == *buttonIt) {
437 scheme.addColor(MFXUtils::getRGBColor((*colIt)->getRGBA()), (*threshIt)->getValue());
438 return true;
439 } else if (sender == *(buttonIt + 1)) {
440 scheme.removeColor(pos);
441 return true;
442 }
443 // 2 buttons per item (add / remove)
444 threshIt++;
445 buttonIt += 2;
446 }
447 ++colIt;
448 pos++;
449 }
450 return false;
451}
452
453
454bool
455GUIDialog_ViewSettings::updateScaleRanges(FXObject* sender, std::vector<FXRealSpinner*>::const_iterator scaleIt,
456 std::vector<FXRealSpinner*>::const_iterator scaleEnd,
457 std::vector<FXRealSpinner*>::const_iterator threshIt,
458 std::vector<FXRealSpinner*>::const_iterator threshEnd,
459 std::vector<FXButton*>::const_iterator buttonIt,
460 GUIScaleScheme& scheme) {
461 int pos = 0;
462 while (scaleIt != scaleEnd) {
463 if (scheme.isFixed()) {
464 if (sender == *scaleIt) {
465 scheme.setColor(pos, (*scaleIt)->getValue());
466 }
467 } else {
468 if (sender == *threshIt) {
469 const double val = (*threshIt)->getValue();
470 double lo, hi;
471 if (pos != 0) {
472 threshIt--;
473 (*threshIt)->getRange(lo, hi);
474 (*threshIt)->setRange(lo, val);
475 threshIt++;
476 }
477 threshIt++;
478 if (threshIt != threshEnd) {
479 (*threshIt)->getRange(lo, hi);
480 (*threshIt)->setRange(val, hi);
481 }
482 scheme.setThreshold(pos, val);
483 return false;
484 }
485 if (sender == *scaleIt) {
486 scheme.setColor(pos, (*scaleIt)->getValue());
487 return false;
488 }
489 if (sender == *buttonIt) {
490 scheme.addColor((*scaleIt)->getValue(), (*threshIt)->getValue());
491 return true;
492 } else if (sender == *(buttonIt + 1)) {
493 scheme.removeColor(pos);
494 return true;
495 }
496 threshIt++;
497 buttonIt += 2;
498 }
499 ++scaleIt;
500 pos++;
501 }
502 return false;
503}
504
505
506long
507GUIDialog_ViewSettings::onCmdColorChange(FXObject* sender, FXSelector, void* /*val*/) {
509 tmpSettings.copy(*mySettings);
510 int prevLaneMode = mySettings->getLaneEdgeMode();
511 int prevLaneScaleMode = mySettings->getLaneEdgeScaleMode();
512 int prevVehicleMode = mySettings->vehicleColorer.getActive();
513 int prevVehicleScaleMode = mySettings->vehicleScaler.getActive();
514 int prevPersonMode = mySettings->personColorer.getActive();
515 int prevContainerMode = mySettings->containerColorer.getActive();
516 int prevJunctionMode = mySettings->junctionColorer.getActive();
517 int prevPOIMode = mySettings->poiColorer.getActive();
518 int prevPolyMode = mySettings->polyColorer.getActive();
519 int prevDataMode = mySettings->dataColorer.getActive();
520 bool doRebuildColorMatrices = false;
521
522 tmpSettings.name = mySettings->name;
524
525 // additionals
534 if (mySettings->netedit) {
545
546 tmpSettings.widthSettings.tripWidth = myTripWidth->getValue();
547 tmpSettings.widthSettings.personTripWidth = myPersonTripWidth->getValue();
548 tmpSettings.widthSettings.walkWidth = myWalkWidth->getValue();
549 tmpSettings.widthSettings.rideWidth = myRideWidth->getValue();
550 tmpSettings.widthSettings.transportWidth = myTransportWidth->getValue();
551 tmpSettings.widthSettings.transhipWidth = myTranshipWidth->getValue();
552
565 }
566
567 tmpSettings.showGrid = (myShowGrid->getCheck() != FALSE);
568 tmpSettings.gridXSize = (double) myGridXSizeDialer->getValue();
569 tmpSettings.gridYSize = (double) myGridYSizeDialer->getValue();
570
574 } else {
577 }
578 tmpSettings.laneShowBorders = (myShowLaneBorders->getCheck() != FALSE);
579 tmpSettings.showBikeMarkings = (myShowBikeMarkings->getCheck() != FALSE);
580 tmpSettings.showLinkDecals = (myShowLaneDecals->getCheck() != FALSE);
581 tmpSettings.realisticLinkRules = (myRealisticLinkRules->getCheck() != FALSE);
582 tmpSettings.showLinkRules = (myShowLinkRules->getCheck() != FALSE);
583 tmpSettings.showRails = (myShowRails->getCheck() != FALSE);
584 tmpSettings.secondaryShape = (mySecondaryShape->getCheck() != FALSE);
585 tmpSettings.edgeName = myEdgeNamePanel->getSettings();
589 tmpSettings.edgeValue = myEdgeValuePanel->getSettings();
591 tmpSettings.hideConnectors = (myHideMacroConnectors->getCheck() != FALSE);
592 tmpSettings.showLaneDirection = (myShowLaneDirection->getCheck() != FALSE);
593 tmpSettings.showSublanes = (myShowSublanes->getCheck() != FALSE);
594 tmpSettings.spreadSuperposed = (mySpreadSuperposed->getCheck() != FALSE);
595 tmpSettings.disableHideByZoom = (myDisableHideByZoom->getCheck() != FALSE);
596 if (sender == myParamKey) {
598 tmpSettings.edgeParam = myParamKey->getText().text();
600 tmpSettings.laneParam = myParamKey->getText().text();
602 tmpSettings.edgeData = myParamKey->getText().text();
604 tmpSettings.edgeData = myParamKey->getText().text();
605 }
606 } else if (sender == myScalingParamKey) {
608 tmpSettings.edgeDataScaling = myScalingParamKey->getText().text();
609 }
610 } else if (sender == myVehicleParamKey) {
612 tmpSettings.vehicleParam = myVehicleParamKey->getText().text();
613 }
614 } else if (sender == myVehicleScalingParamKey) {
616 tmpSettings.vehicleScaleParam = myVehicleScalingParamKey->getText().text();
617 }
618 } else if (sender == myDataParamKey) {
620 tmpSettings.relDataAttr = myDataParamKey->getText().text();
621 }
622 } else if (sender == myVehicleTextPanel->myCheck) {
624 } else if (sender == myVehicleTextParamKey) {
625 tmpSettings.vehicleTextParam = myVehicleTextParamKey->getText().text();
626 } else if (sender == myPOITextPanel->myCheck) {
628 } else if (sender == myPOITextParamKey) {
629 tmpSettings.poiTextParam = myPOITextParamKey->getText().text();
630 } else if (sender == myMeanDataID) {
631 tmpSettings.edgeDataID = myMeanDataID->getText().text();
632 }
634 tmpSettings.laneWidthExaggeration = myLaneWidthUpscaleDialer->getValue();
635 tmpSettings.laneMinSize = myLaneMinWidthDialer->getValue();
636
640 tmpSettings.showBlinker = (myShowBlinker->getCheck() != FALSE);
641 tmpSettings.drawMinGap = (myShowMinGap->getCheck() != FALSE);
642 tmpSettings.drawBrakeGap = (myShowBrakeGap->getCheck() != FALSE);
643 tmpSettings.showBTRange = (myShowBTRange->getCheck() != FALSE);
644 tmpSettings.showRouteIndex = (myShowRouteIndex->getCheck() != FALSE);
645 tmpSettings.scaleLength = (myScaleLength->getCheck() != FALSE);
646 tmpSettings.drawReversed = (myDrawReversed->getCheck() != FALSE);
647 tmpSettings.showParkingInfo = (myShowParkingInfo->getCheck() != FALSE);
648 tmpSettings.showChargingInfo = (myShowChargingInfo->getCheck() != FALSE);
649 /*
650 tmpSettings.drawLaneChangePreference = (myShowLaneChangePreference->getCheck() != FALSE);
651 */
657
663
668
679
680 tmpSettings.addName = myAddNamePanel->getSettings();
682 tmpSettings.addSize = myAddSizePanel->getSettings();
683
685 tmpSettings.poiDetail = myPoiDetail->getValue();
686 tmpSettings.poiName = myPOINamePanel->getSettings();
687 tmpSettings.poiType = myPOITypePanel->getSettings();
688 tmpSettings.poiText = myPOITextPanel->getSettings();
689 tmpSettings.poiSize = myPOISizePanel->getSettings();
690 tmpSettings.poiUseCustomLayer = myPOIUseCustomLayer->getCheck() != FALSE;
691 tmpSettings.poiCustomLayer = myPOICustomLayer->getValue();
692
694 tmpSettings.polyName = myPolyNamePanel->getSettings();
695 tmpSettings.polyType = myPolyTypePanel->getSettings();
696 tmpSettings.polySize = myPolySizePanel->getSettings();
697 tmpSettings.polyUseCustomLayer = myPolyUseCustomLayer->getCheck() != FALSE;
698 tmpSettings.polyCustomLayer = myPolyCustomLayer->getValue();
699
700 if (mySettings->netedit) {
701 tmpSettings.dataValue = myDataValuePanel->getSettings();
703 tmpSettings.dataValue = myDataValuePanel->getSettings();
704 tmpSettings.tazRelWidthExaggeration = myTazRelationUpscaleDialer->getValue();
707 }
708
709 tmpSettings.showLane2Lane = (myShowLane2Lane->getCheck() != FALSE);
710 tmpSettings.drawJunctionShape = (myDrawJunctionShape->getCheck() != FALSE);
711 tmpSettings.drawCrossingsAndWalkingareas = (myDrawCrossingsAndWalkingAreas->getCheck() != FALSE);
712 tmpSettings.dither = (myDither->getCheck() != FALSE);
713 tmpSettings.fps = (myFPS->getCheck() != FALSE);
714 tmpSettings.trueZ = (myTrueZ->getCheck() != FALSE);
715 tmpSettings.drawBoundaries = (myDrawBoundaries->getCheck() != FALSE);
716 tmpSettings.forceDrawForRectangleSelection = (myForceDrawForRectangleSelection->getCheck() != FALSE);
717 tmpSettings.disableDottedContours = (myDisableDottedContours->getCheck() != FALSE);
719 tmpSettings.showSizeLegend = (myShowSizeLegend->getCheck() != FALSE);
720 tmpSettings.showColorLegend = (myShowColorLegend->getCheck() != FALSE);
721 tmpSettings.showVehicleColorLegend = (myShowVehicleColorLegend->getCheck() != FALSE);
722 tmpSettings.show3DTLSDomes = (myShow3DTLSDomes->getCheck() != FALSE);
723 tmpSettings.show3DTLSLinkMarkers = (myShow3DTLSLinkMarkers->getCheck() != FALSE);
724 tmpSettings.show3DHeadUpDisplay = (myShow3DHeadUpDisplay->getCheck() != FALSE);
725 tmpSettings.generate3DTLSModels = (myGenerate3DTLSModels->getCheck() != FALSE);
726 const unsigned char lightFactor = (unsigned char)myLight3DFactor->getValue();
727 tmpSettings.ambient3DLight.set(lightFactor / 2, lightFactor / 2, lightFactor / 2, 255);
728 tmpSettings.diffuse3DLight.set(lightFactor, lightFactor, lightFactor, 255);
729 tmpSettings.skyColor = MFXUtils::getRGBColor(mySkyColor->getRGBA());
730
731 // lanes (colors)
732 if (sender == myEdgeRainbowPanel->myColorRainbow) {
734 doRebuildColorMatrices = true;
735 } else if (sender == myJunctionRainbowPanel->myColorRainbow) {
737 doRebuildColorMatrices = true;
738 } else if (myDataRainbowPanel && sender == myDataRainbowPanel->myColorRainbow) {
740 doRebuildColorMatrices = true;
741 }
742 if (tmpSettings.getLaneEdgeMode() == prevLaneMode) {
743 if (updateColorRanges(sender, myLaneColors.begin(), myLaneColors.end(),
744 myLaneThresholds.begin(), myLaneThresholds.end(), myLaneButtons.begin(),
745 tmpSettings.getLaneEdgeScheme())) {
746 doRebuildColorMatrices = true;
747 }
748 if (sender == myLaneColorInterpolation) {
749 tmpSettings.getLaneEdgeScheme().setInterpolated(myLaneColorInterpolation->getCheck() != FALSE);
750 doRebuildColorMatrices = true;
751 }
752 } else {
753 doRebuildColorMatrices = true;
754 }
755 // lanes (scaling)
756 if (tmpSettings.getLaneEdgeScaleMode() == prevLaneScaleMode) {
757 if (updateScaleRanges(sender, myLaneScales.begin(), myLaneScales.end(),
759 tmpSettings.getLaneEdgeScaleScheme())) {
760 doRebuildColorMatrices = true;
761 }
762 if (sender == myLaneScaleInterpolation) {
763 tmpSettings.getLaneEdgeScaleScheme().setInterpolated(myLaneScaleInterpolation->getCheck() != FALSE);
764 doRebuildColorMatrices = true;
765 }
766 } else {
767 doRebuildColorMatrices = true;
768 }
769 // vehicles
770 if (tmpSettings.vehicleColorer.getActive() == prevVehicleMode) {
771 if (updateColorRanges(sender, myVehicleColors.begin(), myVehicleColors.end(),
773 tmpSettings.vehicleColorer.getScheme())) {
774 doRebuildColorMatrices = true;
775 }
776 if (sender == myVehicleColorInterpolation) {
777 tmpSettings.vehicleColorer.getScheme().setInterpolated(myVehicleColorInterpolation->getCheck() != FALSE);
778 doRebuildColorMatrices = true;
779 }
780 } else {
781 doRebuildColorMatrices = true;
782 }
783 // vehicles (scaling)
784 if (tmpSettings.vehicleScaler.getActive() == prevVehicleScaleMode) {
785 if (updateScaleRanges(sender, myVehicleScales.begin(), myVehicleScales.end(),
787 tmpSettings.vehicleScaler.getScheme())) {
788 doRebuildColorMatrices = true;
789 }
790 if (sender == myVehicleScaleInterpolation) {
791 tmpSettings.vehicleScaler.getScheme().setInterpolated(myVehicleScaleInterpolation->getCheck() != FALSE);
792 doRebuildColorMatrices = true;
793 }
794 } else {
795 doRebuildColorMatrices = true;
796 }
797 // persons
798 if (tmpSettings.personColorer.getActive() == prevPersonMode) {
799 if (updateColorRanges(sender, myPersonColors.begin(), myPersonColors.end(),
801 tmpSettings.personColorer.getScheme())) {
802 doRebuildColorMatrices = true;
803 }
804 if (sender == myPersonColorInterpolation) {
805 tmpSettings.personColorer.getScheme().setInterpolated(myPersonColorInterpolation->getCheck() != FALSE);
806 doRebuildColorMatrices = true;
807 }
808 } else {
809 doRebuildColorMatrices = true;
810 }
811 // containers
812 if (tmpSettings.containerColorer.getActive() == prevContainerMode) {
813 if (updateColorRanges(sender, myContainerColors.begin(), myContainerColors.end(),
815 tmpSettings.containerColorer.getScheme())) {
816 doRebuildColorMatrices = true;
817 }
818 if (sender == myContainerColorInterpolation) {
820 doRebuildColorMatrices = true;
821 }
822 } else {
823 doRebuildColorMatrices = true;
824 }
825 // junctions
826 if (tmpSettings.junctionColorer.getActive() == prevJunctionMode) {
827 if (updateColorRanges(sender, myJunctionColors.begin(), myJunctionColors.end(),
829 tmpSettings.junctionColorer.getScheme())) {
830 doRebuildColorMatrices = true;
831 }
832 if (sender == myJunctionColorInterpolation) {
833 tmpSettings.junctionColorer.getScheme().setInterpolated(myJunctionColorInterpolation->getCheck() != FALSE);
834 doRebuildColorMatrices = true;
835 }
836 } else {
837 doRebuildColorMatrices = true;
838 }
839 // POIs
840 if (tmpSettings.poiColorer.getActive() == prevPOIMode) {
841 if (updateColorRanges(sender, myPOIColors.begin(), myPOIColors.end(),
842 myPOIThresholds.begin(), myPOIThresholds.end(), myPOIButtons.begin(),
843 tmpSettings.poiColorer.getScheme())) {
844 doRebuildColorMatrices = true;
845 }
846 if (sender == myPOIColorInterpolation) {
847 tmpSettings.poiColorer.getScheme().setInterpolated(myPOIColorInterpolation->getCheck() != FALSE);
848 doRebuildColorMatrices = true;
849 }
850 } else {
851 doRebuildColorMatrices = true;
852 }
853 // polygons
854 if (tmpSettings.polyColorer.getActive() == prevPolyMode) {
855 if (updateColorRanges(sender, myPolyColors.begin(), myPolyColors.end(),
856 myPolyThresholds.begin(), myPolyThresholds.end(), myPolyButtons.begin(),
857 tmpSettings.polyColorer.getScheme())) {
858 doRebuildColorMatrices = true;
859 }
860 if (sender == myPolyColorInterpolation) {
861 tmpSettings.polyColorer.getScheme().setInterpolated(myPolyColorInterpolation->getCheck() != FALSE);
862 doRebuildColorMatrices = true;
863 }
864 } else {
865 doRebuildColorMatrices = true;
866 }
867 // data
868 if (tmpSettings.netedit) {
869 if (tmpSettings.dataColorer.getActive() == prevDataMode) {
870 if (updateColorRanges(sender, myDataColors.begin(), myDataColors.end(),
871 myDataThresholds.begin(), myDataThresholds.end(), myDataButtons.begin(),
872 tmpSettings.dataColorer.getScheme())) {
873 doRebuildColorMatrices = true;
874 }
875 if (sender == myDataColorInterpolation) {
876 tmpSettings.dataColorer.getScheme().setInterpolated(myDataColorInterpolation->getCheck() != FALSE);
877 doRebuildColorMatrices = true;
878 }
879 } else {
880 doRebuildColorMatrices = true;
881 }
882 }
883 // openGL
884 if (sender == myRecalculateBoundaries) {
886 }
887
888 if (sender == myShowPedestrianNetwork) {
889 tmpSettings.showPedestrianNetwork = (myShowPedestrianNetwork->getCheck() != FALSE);
890 myParent->drawPedestrianNetwork(tmpSettings);
891 }
892
893 if (sender == myPedestrianNetworkColor) {
896 }
897
898 if (tmpSettings == *mySettings) {
899 return 1;
900 }
901
902 int index = mySchemeName->getCurrentItem();
903 if (index < (int) gSchemeStorage.getNumInitialSettings()) {
904 // one of the initial settings is modified
905 // every time this happens we create a new scheme
906 int suffix = 1;
907 while (gSchemeStorage.contains("custom_" + toString(suffix))) {
908 suffix++;
909 }
910 tmpSettings.name = "custom_" + toString(suffix);
911 // the newly created settings must be entered in several places:
912 // - the comboBox mySchemeName of this dialog
913 // - the comboBox of the parent view (set as active)
914 // - the comboBox of all other views (only append) XXX @todo
915 index = mySchemeName->appendIconItem(tmpSettings.name.c_str());
917 myParent->getColoringSchemesCombo()->appendIconItem(tmpSettings.name.c_str());
918 }
920 myParent->getColoringSchemesCombo()->findItem(tmpSettings.name.c_str()));
921 gSchemeStorage.add(tmpSettings); // overwrites existing
922 mySettings = &gSchemeStorage.get(tmpSettings.name);
923 myParent->setColorScheme(tmpSettings.name);
924
925 if (doRebuildColorMatrices) {
927 }
928 myParent->handle(this, FXSEL(SEL_CHANGED, MID_SIMPLE_VIEW_COLORCHANGE), nullptr);
929 myParent->forceRefresh();
930 getApp()->forceRefresh();
931 return 1;
932}
933
934
935void
936GUIDialog_ViewSettings::loadSettings(const std::string& file) {
937 GUISettingsHandler handler(file, true, mySettings->netedit);
938 for (std::string settingsName : handler.addSettings(myParent)) {
939 FXint index = mySchemeName->appendIconItem(settingsName.c_str());
941 mySettings = &gSchemeStorage.get(settingsName);
942 }
943 if (handler.hasDecals()) {
945 myParent->getDecals() = handler.getDecals();
947 myParent->update();
948 myParent->getDecalsLockMutex().unlock();
949 }
950 if (handler.getDelay() >= 0) {
951 myParent->setDelay(handler.getDelay());
952 }
953 if (handler.getBreakpoints().size() > 0) {
955 }
956 handler.applyViewport(myParent);
958}
959
960
961void
963 for (const auto& decal : myParent->getDecals()) {
964 // only save decals with non empty filename
965 if (decal.filename.size() > 0) {
966 // check if decal is a light
967 const bool isLight = (decal.filename.substr(0, 5) == "light") && (decal.filename.length() == 6) && isdigit(decal.filename[5]);
968 if (isLight) {
970 dev.writeAttr(SUMO_ATTR_INDEX, decal.filename.substr(5, 1));
971 } else {
973 dev.writeAttr("file", decal.filename);
974 dev.writeAttr("screenRelative", decal.screenRelative);
975 }
976 dev.writeAttr(SUMO_ATTR_CENTER_X, decal.centerX);
977 dev.writeAttr(SUMO_ATTR_CENTER_Y, decal.centerY);
978 dev.writeAttr(SUMO_ATTR_CENTER_Z, decal.centerZ);
979 dev.writeAttr(SUMO_ATTR_WIDTH, decal.width);
980 dev.writeAttr(SUMO_ATTR_HEIGHT, decal.height);
981 dev.writeAttr("altitude", decal.altitude);
982 dev.writeAttr("rotation", decal.rot);
983 dev.writeAttr("tilt", decal.tilt);
984 dev.writeAttr("roll", decal.roll);
985 dev.writeAttr(SUMO_ATTR_LAYER, decal.layer);
986 dev.closeTag();
987 }
988 }
989}
990
991
992void
993GUIDialog_ViewSettings::loadDecals(const std::string& file) {
995 GUISettingsHandler handler(file);
996 if (handler.hasDecals()) {
997 myParent->getDecals() = handler.getDecals();
998 }
1000 myParent->update();
1001 myParent->getDecalsLockMutex().unlock();
1002}
1003
1004
1005long
1006GUIDialog_ViewSettings::onCmdSaveSetting(FXObject*, FXSelector, void* /*data*/) {
1007 int index = mySchemeName->getCurrentItem();
1008 if (index < (int) gSchemeStorage.getNumInitialSettings()) {
1009 return 1;
1010 }
1011 // get the name
1012 std::string name = "";
1013 while (name.length() == 0) {
1014 FXDialogBox dialog(this, TL("Enter a name"), GUIDesignViewSettingsDialog);
1015 FXVerticalFrame* content = new FXVerticalFrame(&dialog, GUIDesignViewSettingsVerticalFrame5);
1016 new FXLabel(content, TL("Please enter an alphanumeric name: "), nullptr, GUIDesignViewSettingsLabel2);
1017 FXTextField* text = new FXTextField(content, 40, &dialog, FXDialogBox::ID_ACCEPT, GUIDesignViewSettingsTextField1);
1018 new FXHorizontalSeparator(content, GUIDesignHorizontalSeparator);
1019 FXHorizontalFrame* buttons = new FXHorizontalFrame(content, GUIDesignViewSettingsHorizontalFrame3);
1020 GUIDesigns::buildFXButton(buttons, TL("&OK"), "", "", nullptr, &dialog, FXDialogBox::ID_ACCEPT, GUIDesignViewSettingsButton4);
1021 GUIDesigns::buildFXButton(buttons, TL("&Cancel"), "", "", nullptr, &dialog, FXDialogBox::ID_CANCEL, GUIDesignViewSettingsButton5);
1022 dialog.create();
1023 text->setFocus();
1024 if (!dialog.execute()) {
1025 return 1;
1026 }
1027 name = text->getText().text();
1028 for (int i = 0; i < (int)name.length(); ++i) {
1029 if (name[i] != '_' && (name[i] < 'a' || name[i] > 'z') && (name[i] < 'A' || name[i] > 'Z') && (name[i] < '0' || name[i] > '9')) {
1030 name = "";
1031 break;
1032 }
1033 }
1034 }
1036 tmpSettings.copy(*mySettings);
1037 tmpSettings.name = name;
1038 if (name == mySettings->name || StringUtils::startsWith(mySettings->name, "custom_")) {
1040 myParent->getColoringSchemesCombo()->insertIconItem(index, name.c_str());
1041 } else {
1043 index = mySchemeName->appendIconItem(name.c_str());
1046 myParent->getColoringSchemesCombo()->findItem(name.c_str()));
1047 }
1048 gSchemeStorage.add(tmpSettings);
1049 mySchemeName->insertIconItem(index, name.c_str());
1050 myParent->setColorScheme(name);
1051 mySettings = &gSchemeStorage.get(name);
1053 gSchemeStorage.writeSettings(getApp());
1054 return 1;
1055}
1056
1057
1058long
1059GUIDialog_ViewSettings::onUpdSaveSetting(FXObject* sender, FXSelector, void* ptr) {
1060 sender->handle(this,
1062 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1063 ptr);
1064 return 1;
1065}
1066
1067
1068long
1069GUIDialog_ViewSettings::onCmdDeleteSetting(FXObject*, FXSelector, void* /*data*/) {
1070 int index = mySchemeName->getCurrentItem();
1071 if (index < (int) gSchemeStorage.getNumInitialSettings()) {
1072 return 1;
1073 }
1074 std::string name = mySchemeName->getItemText(index);
1075 gSchemeStorage.remove(name);
1076 mySchemeName->removeItem(index);
1077 onCmdNameChange(nullptr, 0, (void*) mySchemeName->getItemText(0).c_str());
1078 gSchemeStorage.writeSettings(getApp());
1079 return 1;
1080}
1081
1082
1083long
1084GUIDialog_ViewSettings::onUpdDeleteSetting(FXObject* sender, FXSelector, void* ptr) {
1085 sender->handle(this,
1087 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1088 ptr);
1089 return 1;
1090}
1091
1092
1093long
1094GUIDialog_ViewSettings::onCmdExportSetting(FXObject*, FXSelector, void* /*data*/) {
1095 FXString file = MFXUtils::getFilename2Write(this, TL("Export view settings"), ".xml", GUIIconSubSys::getIcon(GUIIcon::SAVE), gCurrentFolder);
1096 if (file == "") {
1097 return 1;
1098 }
1099 try {
1100 OutputDevice& dev = OutputDevice::getDevice(file.text(), false);
1102 if (myParent->is3DView()) {
1103 dev.writeAttr(SUMO_ATTR_TYPE, "osg");
1104 }
1105 mySettings->save(dev);
1106 if (mySaveViewPort->getCheck()) {
1108 }
1109 if (mySaveDelay->getCheck()) {
1112 dev.closeTag();
1113 }
1114 if (mySaveDecals->getCheck()) {
1115 saveDecals(dev);
1116 }
1117 if (!mySettings->netedit && mySaveBreakpoints->getCheck()) {
1121 dev.closeTag();
1122 }
1123 }
1124 dev.closeTag();
1125 dev.close();
1126 } catch (IOError& e) {
1127 FXMessageBox::error(this, MBOX_OK, TL("Storing failed!"), "%s", e.what());
1128 }
1129 return 1;
1130}
1131
1132
1133long
1134GUIDialog_ViewSettings::onUpdExportSetting(FXObject* sender, FXSelector, void* ptr) {
1135 sender->handle(this,
1137 && !mySaveViewPort->getCheck() && !mySaveDelay->getCheck() && !mySaveDecals->getCheck() && !mySaveBreakpoints->getCheck()) ?
1138 FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1139 ptr);
1140 return 1;
1141}
1142
1143
1144long
1145GUIDialog_ViewSettings::onCmdImportSetting(FXObject*, FXSelector, void* /*data*/) {
1146 FXFileDialog opendialog(this, TL("Import view settings"));
1147 opendialog.setIcon(GUIIconSubSys::getIcon(GUIIcon::OPEN));
1148 opendialog.setSelectMode(SELECTFILE_ANY);
1149 opendialog.setPatternList("*.xml,*.xml.gz");
1150 if (gCurrentFolder.length() != 0) {
1151 opendialog.setDirectory(gCurrentFolder);
1152 }
1153 if (opendialog.execute()) {
1154 gCurrentFolder = opendialog.getDirectory();
1155 loadSettings(opendialog.getFilename().text());
1156 }
1157 return 1;
1158}
1159
1160
1161long
1162GUIDialog_ViewSettings::onCmdLoadDecal(FXObject*, FXSelector, void* /*data*/) {
1163 FXFileDialog opendialog(this, TL("Load Decals"));
1164 opendialog.setIcon(GUIIconSubSys::getIcon(GUIIcon::EMPTY));
1165 opendialog.setSelectMode(SELECTFILE_ANY);
1166 opendialog.setPatternList("*.xml,*.xml.gz");
1167 if (gCurrentFolder.length() != 0) {
1168 opendialog.setDirectory(gCurrentFolder);
1169 }
1170 if (opendialog.execute()) {
1171 gCurrentFolder = opendialog.getDirectory();
1172 loadDecals(opendialog.getFilename().text());
1173 }
1174 return 1;
1175}
1176
1177
1178long
1179GUIDialog_ViewSettings::onCmdLoadXMLDecals(FXObject*, FXSelector, void* /*data*/) {
1180 FXFileDialog opendialog(this, TL("Load Decals"));
1181 opendialog.setIcon(GUIIconSubSys::getIcon(GUIIcon::EMPTY));
1182 opendialog.setSelectMode(SELECTFILE_ANY);
1183 opendialog.setPatternList("*.xml,*.xml.gz");
1184 if (gCurrentFolder.length() != 0) {
1185 opendialog.setDirectory(gCurrentFolder);
1186 }
1187 if (opendialog.execute()) {
1188 gCurrentFolder = opendialog.getDirectory();
1189 loadDecals(opendialog.getFilename().text());
1190 }
1191 return 1;
1192}
1193
1194
1195long
1196GUIDialog_ViewSettings::onCmdSaveXMLDecals(FXObject*, FXSelector, void* /*data*/) {
1197 FXString file = MFXUtils::getFilename2Write(this, TL("Save Decals"), ".xml", GUIIconSubSys::getIcon(GUIIcon::EMPTY), gCurrentFolder);
1198 if (file == "") {
1199 return 1;
1200 }
1201 try {
1202 OutputDevice& dev = OutputDevice::getDevice(file.text());
1203 dev.openTag("decals");
1204 saveDecals(dev);
1205 dev.closeTag();
1206 dev.close();
1207 } catch (IOError& e) {
1208 FXMessageBox::error(myParent, MBOX_OK, TL("Storing failed!"), "%s", e.what());
1209 }
1210 return 1;
1211}
1212
1213
1214long
1215GUIDialog_ViewSettings::onCmdClearDecals(FXObject*, FXSelector, void* /*data*/) {
1216 // lock decals mutex
1217 myParent->getDecalsLockMutex().lock();
1218 // clear decals
1219 myParent->getDecals().clear();
1220 // update view
1221 myParent->update();
1222 // fill table again
1224 // unlock decals mutex
1225 myParent->getDecalsLockMutex().unlock();
1226 return 1;
1227}
1228
1229
1230long
1231GUIDialog_ViewSettings::onUpdImportSetting(FXObject* sender, FXSelector, void* ptr) {
1232 sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), ptr);
1233 return 1;
1234}
1235
1236
1237FXMatrix*
1239 std::vector<FXColorWell*>& colors,
1240 std::vector<FXRealSpinner*>& thresholds,
1241 std::vector<FXButton*>& buttons,
1242 FXCheckButton* interpolation,
1243 GUIColorScheme& scheme) {
1245 FXMatrix* m = new FXMatrix(frame, 4, GUIDesignViewSettingsMatrix4);
1246 colors.clear();
1247 thresholds.clear();
1248 buttons.clear();
1249 const bool fixed = scheme.isFixed();
1250 std::vector<RGBColor>::const_iterator colIt = scheme.getColors().begin();
1251 std::vector<double>::const_iterator threshIt = scheme.getThresholds().begin();
1252 std::vector<std::string>::const_iterator nameIt = scheme.getNames().begin();
1253 while (colIt != scheme.getColors().end()) {
1254 colors.push_back(new FXColorWell(m, MFXUtils::getFXColor(*colIt), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsColorWell1));
1255 if (fixed) {
1256 new FXLabel(m, nameIt->c_str());
1257 new FXLabel(m, "");
1258 new FXLabel(m, "");
1259 } else {
1260 const int dialerOptions = scheme.allowsNegativeValues() ? SPIN_NOMIN : 0;
1261 FXRealSpinner* threshDialer = new FXRealSpinner(m, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, FRAME_THICK | FRAME_SUNKEN | LAYOUT_TOP | LAYOUT_CENTER_Y | SPIN_NOMAX | dialerOptions);
1262 threshDialer->setValue(*threshIt);
1263 thresholds.push_back(threshDialer);
1264 if (*threshIt == GUIVisualizationSettings::MISSING_DATA) {
1265 threshDialer->disable();
1266 threshDialer->hide();
1267 buttons.push_back(GUIDesigns::buildFXButton(m, "", "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1268 buttons.back()->hide();
1269 buttons.push_back(GUIDesigns::buildFXButton(m, TL("No Data"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1270 buttons.back()->disable();
1271 } else {
1272 buttons.push_back(GUIDesigns::buildFXButton(m, TL("Add"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1273 buttons.push_back(GUIDesigns::buildFXButton(m, TL("Remove"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1274 }
1275 }
1276 colIt++;
1277 threshIt++;
1278 nameIt++;
1279 }
1280 interpolation->setCheck(scheme.isInterpolated());
1281 if (fixed) {
1282 interpolation->disable();
1283 } else {
1284 if (colors.size() > 1) {
1285 interpolation->enable();
1286 if (interpolation->getCheck() != FALSE) {
1287 thresholds.front()->enable();
1288 } else {
1289 thresholds.front()->disable();
1290 }
1291 } else {
1292 interpolation->disable();
1293 thresholds.front()->disable();
1294 }
1295 }
1296 return m;
1297}
1298
1299
1300FXMatrix*
1302 std::vector<FXRealSpinner*>& scales,
1303 std::vector<FXRealSpinner*>& thresholds,
1304 std::vector<FXButton*>& buttons,
1305 FXCheckButton* interpolation,
1306 GUIScaleScheme& scheme) {
1308 FXMatrix* m = new FXMatrix(frame, 4, GUIDesignViewSettingsMatrix4);
1309 scales.clear();
1310 thresholds.clear();
1311 buttons.clear();
1312 const bool fixed = scheme.isFixed();
1313 std::vector<double>::const_iterator scaleIt = scheme.getColors().begin();
1314 std::vector<double>::const_iterator threshIt = scheme.getThresholds().begin();
1315 std::vector<std::string>::const_iterator nameIt = scheme.getNames().begin();
1316 while (scaleIt != scheme.getColors().end()) {
1317 FXRealSpinner* scaleDialer = new FXRealSpinner(m, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, FRAME_THICK | FRAME_SUNKEN | LAYOUT_TOP | LAYOUT_CENTER_Y | SPIN_NOMAX);
1318 scaleDialer->setValue(*scaleIt);
1319 scales.push_back(scaleDialer);
1320 if (fixed) {
1321 new FXLabel(m, nameIt->c_str());
1322 new FXLabel(m, "");
1323 new FXLabel(m, "");
1324 } else {
1325 const int dialerOptions = scheme.allowsNegativeValues() ? SPIN_NOMIN : 0;
1326 FXRealSpinner* threshDialer = new FXRealSpinner(m, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, FRAME_THICK | FRAME_SUNKEN | LAYOUT_TOP | LAYOUT_CENTER_Y | SPIN_NOMAX | dialerOptions);
1327 threshDialer->setValue(*threshIt);
1328 thresholds.push_back(threshDialer);
1329 if (*threshIt == GUIVisualizationSettings::MISSING_DATA) {
1330 threshDialer->disable();
1331 threshDialer->hide();
1332 buttons.push_back(GUIDesigns::buildFXButton(m, "", "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1333 buttons.back()->hide();
1334 buttons.push_back(GUIDesigns::buildFXButton(m, TL("No Data"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1335 buttons.back()->disable();
1336 } else {
1337 buttons.push_back(GUIDesigns::buildFXButton(m, TL("Add"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1338 buttons.push_back(GUIDesigns::buildFXButton(m, TL("Remove"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsButton1));
1339 }
1340 }
1341 scaleIt++;
1342 threshIt++;
1343 nameIt++;
1344 }
1345 interpolation->setCheck(scheme.isInterpolated());
1346 if (fixed) {
1347 interpolation->disable();
1348 } else {
1349 if (scales.size() > 1) {
1350 interpolation->enable();
1351 if (interpolation->getCheck() != FALSE) {
1352 thresholds.front()->enable();
1353 } else {
1354 thresholds.front()->disable();
1355 }
1356 } else {
1357 interpolation->disable();
1358 thresholds.front()->disable();
1359 }
1360 }
1361 return m;
1362}
1363
1364
1365void
1368 if (doCreate) {
1369 m->create();
1370 }
1373 } else {
1375 }
1378 } else {
1380 }
1381 std::string activeSchemeName = myLaneEdgeColorMode->getText().text();
1382 std::string activeScaleSchemeName = myLaneEdgeScaleMode->getText().text();
1383 myParamKey->clearItems();
1384 myScalingParamKey->clearItems();
1386 myMeanDataID->hide();
1388 myParamKey->appendItem(mySettings->edgeParam.c_str());
1389 for (const std::string& attr : myParent->getEdgeLaneParamKeys(true)) {
1390 if (attr != mySettings->edgeParam) {
1391 myParamKey->appendItem(attr.c_str());
1392 }
1393 }
1394 myParamKey->enable();
1395 } else if (activeSchemeName == GUIVisualizationSettings::SCHEME_NAME_LANE_PARAM_NUMERICAL) {
1396 myParamKey->appendItem(mySettings->laneParam.c_str());
1397 for (const std::string& attr : myParent->getEdgeLaneParamKeys(false)) {
1398 if (attr != mySettings->laneParam) {
1399 myParamKey->appendItem(attr.c_str());
1400 }
1401 }
1402 myParamKey->enable();
1403 } else if (activeSchemeName == GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_NUMERICAL) {
1404 myParamKey->appendItem(mySettings->edgeData.c_str());
1405 for (const std::string& attr : myParent->getEdgeDataAttrs()) {
1406 if (attr != mySettings->edgeData) {
1407 myParamKey->appendItem(attr.c_str());
1408 }
1409 }
1410 myParamKey->enable();
1411 } else if (activeSchemeName == GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_LIVE) {
1412 if (mySettings->edgeDataID != "") {
1414 }
1415 for (const std::string& attr : myParent->getMeanDataIDs()) {
1416 if (attr != mySettings->edgeDataID) {
1417 myMeanDataID->appendIconItem(attr.c_str());
1418 }
1419 }
1420 if (myMeanDataID->getNumItems() > 0) {
1421 if (mySettings->edgeDataID == "") {
1423 }
1425 myMeanDataID->show();
1426 myParamKey->appendItem(mySettings->edgeData.c_str());
1427 for (const std::string& attr : myParent->getMeanDataAttrs(mySettings->edgeDataID)) {
1428 if (attr != mySettings->edgeData) {
1429 myParamKey->appendItem(attr.c_str());
1430 }
1431 }
1432 myParamKey->enable();
1433 }
1434 } else {
1435 myParamKey->disable();
1436 }
1437
1438 if (activeScaleSchemeName == GUIVisualizationSettings::SCHEME_NAME_EDGEDATA_NUMERICAL) {
1439 myScalingParamKey->appendItem(mySettings->edgeDataScaling.c_str());
1440 for (const std::string& attr : myParent->getEdgeDataAttrs()) {
1441 if (attr != mySettings->edgeDataScaling) {
1442 myScalingParamKey->appendItem(attr.c_str());
1443 }
1444 }
1445 myScalingParamKey->enable();
1446 } else {
1447 myScalingParamKey->disable();
1448 }
1449
1450 myParamKey->setNumVisible(myParamKey->getNumItems());
1451 myScalingParamKey->setNumVisible(myScalingParamKey->getNumItems());
1452 myLaneColorSettingFrame->getParent()->recalc();
1453
1455 if (doCreate) {
1456 m->create();
1457 }
1458 myLaneScaleSettingFrame->getParent()->recalc();
1459
1461 if (doCreate) {
1462 m->create();
1463 }
1464 activeSchemeName = myVehicleColorMode->getText().text();
1467 myVehicleParamKey->enable();
1468 } else {
1469 myVehicleParamKey->disable();
1470 }
1471 myVehicleColorSettingFrame->getParent()->recalc();
1472
1474 if (doCreate) {
1475 m->create();
1476 }
1477 myVehicleScaleSettingFrame->getParent()->recalc();
1478 activeScaleSchemeName = myVehicleScaleMode->getText().text();
1479 if (activeScaleSchemeName == GUIVisualizationSettings::SCHEME_NAME_PARAM_NUMERICAL) {
1480 myVehicleScalingParamKey->enable();
1481 } else {
1482 myVehicleScalingParamKey->disable();
1483 }
1484
1485
1487 if (doCreate) {
1488 m->create();
1489 }
1490 myPersonColorSettingFrame->getParent()->recalc();
1492 if (doCreate) {
1493 m->create();
1494 }
1495 myContainerColorSettingFrame->getParent()->recalc();
1497 if (doCreate) {
1498 m->create();
1499 }
1500 myJunctionColorSettingFrame->getParent()->recalc();
1501 // POIs
1503 if (doCreate) {
1504 m->create();
1505 }
1506 myPOIColorSettingFrame->getParent()->recalc();
1507 // polygons
1509 if (doCreate) {
1510 m->create();
1511 }
1512 myPolyColorSettingFrame->getParent()->recalc();
1513
1514 // data
1515 if (mySettings->netedit) {
1517 if (doCreate) {
1518 m->create();
1519 }
1520 activeSchemeName = myDataColorMode->getText().text();
1522 myDataParamKey->clearItems();
1523 myDataParamKey->appendItem(mySettings->relDataAttr.c_str());
1524 for (const std::string& attr : myParent->getRelDataAttrs()) {
1525 if (attr != mySettings->relDataAttr) {
1526 myDataParamKey->appendItem(attr.c_str());
1527 }
1528 }
1529 myDataParamKey->enable();
1530 } else {
1531 myDataParamKey->disable();
1532 }
1533 myDataColorSettingFrame->getParent()->recalc();
1534 }
1535
1536 layout();
1537 update();
1538}
1539
1540
1541void
1543 myVehicleParamKey->clearItems();
1544 myVehicleTextParamKey->clearItems();
1545 myVehicleScalingParamKey->clearItems();
1546 myVehicleParamKey->appendItem(mySettings->vehicleParam.c_str());
1549 for (const std::string& attr : myParent->getVehicleParamKeys(false)) {
1550 myVehicleParamKey->appendItem(attr.c_str());
1551 myVehicleTextParamKey->appendItem(attr.c_str());
1552 myVehicleScalingParamKey->appendItem(attr.c_str());
1553 }
1554 myVehicleParamKey->setNumVisible(myVehicleParamKey->getNumItems());
1555 myVehicleTextParamKey->setNumVisible(myVehicleTextParamKey->getNumItems());
1556 myVehicleScalingParamKey->setNumVisible(myVehicleScalingParamKey->getNumItems());
1557}
1558
1559
1560void
1562 myPOITextParamKey->clearItems();
1563 myPOITextParamKey->appendItem(mySettings->poiTextParam.c_str());
1564 for (const std::string& attr : myParent->getPOIParamKeys()) {
1565 myPOITextParamKey->appendItem(attr.c_str());
1566 }
1567 myPOITextParamKey->setNumVisible(myPOITextParamKey->getNumItems());
1568}
1569
1570
1571std::string
1575
1576
1577void
1579 if (name.c_str() == mySchemeName->getItemText(mySchemeName->getCurrentItem())) {
1580 return;
1581 }
1582 for (int i = 0; i < mySchemeName->getNumItems(); ++i) {
1583 if (name.c_str() == mySchemeName->getItemText(i)) {
1585 onCmdNameChange(nullptr, 0, (void*)name.c_str());
1586 return;
1587 }
1588 }
1589}
1590
1591
1593 FXMatrix* parent,
1594 GUIDialog_ViewSettings* target,
1595 const std::string& title,
1596 const GUIVisualizationTextSettings& settings) {
1597 myCheck = new FXCheckButton(parent, title.c_str(), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1598 myCheck->setCheck(settings.showText);
1599 myMatrix0 = new FXMatrix(parent, 2, GUIDesignViewSettingsMatrix5);
1600 mySelectedCheck = new FXCheckButton(myMatrix0, TL("Only for selected"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1601 mySelectedCheck->setCheck(settings.onlySelected);
1602 myConstSizeCheck = new FXCheckButton(myMatrix0, TL("constant text size"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1603 myConstSizeCheck->setCheck(settings.constSize);
1604 FXMatrix* m1 = new FXMatrix(parent, 2, GUIDesignViewSettingsMatrix5);
1605 new FXLabel(m1, TL("Size"), nullptr, GUIDesignViewSettingsLabel1);
1606 mySizeDial = new FXRealSpinner(m1, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
1607 mySizeDial->setRange(5, 1000);
1608 mySizeDial->setValue(settings.size);
1609 FXMatrix* m2 = new FXMatrix(parent, 4, GUIDesignViewSettingsMatrix5);
1610 new FXLabel(m2, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
1612 new FXLabel(m2, TL("Background"), nullptr, GUIDesignViewSettingsLabel1);
1614}
1615
1616
1619 return GUIVisualizationTextSettings(myCheck->getCheck() != FALSE,
1620 mySizeDial->getValue(),
1621 MFXUtils::getRGBColor(myColorWell->getRGBA()),
1622 MFXUtils::getRGBColor(myBGColorWell->getRGBA()),
1623 myConstSizeCheck->getCheck() != FALSE,
1624 mySelectedCheck->getCheck() != FALSE);
1625}
1626
1627
1628void
1630 myCheck->setCheck(settings.showText);
1631 mySizeDial->setValue(settings.size);
1632 myColorWell->setRGBA(MFXUtils::getFXColor(settings.color));
1633 myBGColorWell->setRGBA(MFXUtils::getFXColor(settings.bgColor));
1634 myConstSizeCheck->setCheck(settings.constSize);
1635 mySelectedCheck->setCheck(settings.onlySelected);
1636}
1637
1638
1640 const GUIVisualizationSizeSettings& settings, GUIGlObjectType type):
1641 myDialogViewSettings(target),
1642 myType(type) {
1643 myCheck = new FXCheckButton(parent, TL("Draw with constant size when zoomed out"), this, MID_SIMPLE_VIEW_SIZECHANGE, GUIDesignCheckButtonViewSettings);
1644 myCheck->setCheck(settings.constantSize);
1645 myCheckSelected = new FXCheckButton(parent, TL("Only for selected"), this, MID_SIMPLE_VIEW_SIZECHANGE, GUIDesignCheckButtonViewSettings);
1646 myCheckSelected->setCheck(settings.constantSizeSelected);
1647 FXMatrix* m1 = new FXMatrix(parent, 2, GUIDesignViewSettingsMatrix5);
1648 new FXLabel(m1, TL("Minimum Size"), nullptr, GUIDesignViewSettingsLabel1);
1650 myMinSizeDial->setValue(settings.minSize);
1651 FXMatrix* m2 = new FXMatrix(parent, 2, GUIDesignViewSettingsMatrix5);
1652 new FXLabel(m2, TL("Exaggerate by"), nullptr, GUIDesignViewSettingsLabel1);
1654 myExaggerateDial->setRange(0, 10000);
1655 myExaggerateDial->setValue(settings.exaggeration);
1656}
1657
1658
1662 myMinSizeDial->getValue(), myExaggerateDial->getValue(),
1663 myCheck->getCheck() != FALSE,
1664 myCheckSelected->getCheck() != FALSE);
1665}
1666
1667
1668void
1670 myCheck->setCheck(settings.constantSize);
1671 myCheckSelected->setCheck(settings.constantSizeSelected);
1672 myMinSizeDial->setValue(settings.minSize);
1673 myExaggerateDial->setValue(settings.exaggeration);
1674}
1675
1676
1677long
1678GUIDialog_ViewSettings::SizePanel::onCmdSizeChange(FXObject* obj, FXSelector sel, void* ptr) {
1679 // mark boundaries for recomputing
1681 // continue as a normal change
1682 return myDialogViewSettings->onCmdColorChange(obj, sel, ptr);
1683}
1684
1685
1687 FXComposite* parent,
1688 GUIDialog_ViewSettings* target,
1689 const GUIVisualizationRainbowSettings& settings) {
1690 FXMatrix* matrixRainbow = new FXMatrix(parent, 9, GUIDesignViewSettingsMatrix3);
1691 myColorRainbow = GUIDesigns::buildFXButton(matrixRainbow, TL("Recalibrate Rainbow"), "", "", nullptr, target, MID_SIMPLE_VIEW_COLORCHANGE,
1692 (BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT), 0, 0, 0, 0, 20, 20, 4, 4);
1693 myRainbowStyle = new MFXComboBoxIcon(matrixRainbow, 5, false, 10, target, MID_SIMPLE_VIEW_RAINBOW_CHANGE, GUIDesignViewSettingsComboBox1);
1695 myRainbowStyle->appendIconItem(item.first.c_str());
1696 }
1697 myHideMinCheck = new FXCheckButton(matrixRainbow, TL("min"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1698 myHideMinCheck->setCheck(settings.hideMin);
1699 myMinThreshold = new FXRealSpinner(matrixRainbow, 6, target, MID_SIMPLE_VIEW_COLORCHANGE, REALSPIN_NOMIN | GUIDesignViewSettingsSpinDial2);
1700 myMinThreshold->setRange(-std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
1701 myMinThreshold->setValue(settings.minThreshold);
1702 myHideMaxCheck = new FXCheckButton(matrixRainbow, TL("max"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1703 myHideMaxCheck->setCheck(settings.hideMax);
1704 myMaxThreshold = new FXRealSpinner(matrixRainbow, 6, target, MID_SIMPLE_VIEW_COLORCHANGE, REALSPIN_NOMIN | GUIDesignViewSettingsSpinDial2);
1705 myMaxThreshold->setRange(-std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
1706 myMaxThreshold->setValue(settings.maxThreshold);
1707 mySetNeutral = new FXCheckButton(matrixRainbow, TL("center"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1708 mySetNeutral->setCheck(settings.setNeutral);
1709 myNeutralThreshold = new FXRealSpinner(matrixRainbow, 6, target, MID_SIMPLE_VIEW_COLORCHANGE, REALSPIN_NOMIN | GUIDesignViewSettingsSpinDial2);
1710 myNeutralThreshold->setRange(-std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
1711 myNeutralThreshold->setValue(settings.neutralThreshold);
1712 myFixRange = new FXCheckButton(matrixRainbow, TL("fix range"), target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1713 myFixRange->setCheck(settings.fixRange);
1714}
1715
1716
1719 GUIVisualizationRainbowSettings res(myHideMinCheck->getCheck() != FALSE,
1720 myMinThreshold->getValue(),
1721 myHideMaxCheck->getCheck() != FALSE,
1722 myMaxThreshold->getValue(),
1723 mySetNeutral->getCheck() != FALSE,
1724 myNeutralThreshold->getValue(),
1725 myFixRange->getCheck() != FALSE);
1726 std::string sName = myRainbowStyle->getItemText(myRainbowStyle->getCurrentItem());
1728 return res;
1729}
1730
1731
1732void
1734 myHideMinCheck->setCheck(settings.hideMin);
1735 myMinThreshold->setValue(settings.minThreshold);
1736 myHideMaxCheck->setCheck(settings.hideMax);
1737 myMaxThreshold->setValue(settings.maxThreshold);
1738 mySetNeutral->setCheck(settings.setNeutral);
1739 myNeutralThreshold->setValue(settings.neutralThreshold);
1740 myFixRange->setCheck(settings.fixRange);
1741}
1742
1743void
1744GUIDialog_ViewSettings::buildHeader(FXVerticalFrame* contentFrame) {
1745 FXHorizontalFrame* horizontalFrame = new FXHorizontalFrame(contentFrame, GUIDesignViewSettingsHorizontalFrame1);
1746 mySchemeName = new MFXComboBoxIcon(horizontalFrame, 20, true, GUIDesignComboBoxVisibleItemsMedium,
1748 for (const auto& name : gSchemeStorage.getNames()) {
1749 const int index = mySchemeName->appendIconItem(name.c_str());
1750 if (name == mySettings->name) {
1751 mySchemeName->setCurrentItem((FXint)index);
1752 }
1753 }
1754
1755 GUIDesigns::buildFXButton(horizontalFrame, "", "", TL("Save the setting to registry"), GUIIconSubSys::getIcon(GUIIcon::SAVE_DATABASE), this, MID_SIMPLE_VIEW_SAVE, GUIDesignButtonToolbar);
1756 GUIDesigns::buildFXButton(horizontalFrame, "", "", TL("Remove the setting from registry"), GUIIconSubSys::getIcon(GUIIcon::REMOVEDB), this, MID_SIMPLE_VIEW_DELETE, GUIDesignButtonToolbar);
1757 GUIDesigns::buildFXButton(horizontalFrame, "", "", TL("Export setting to file"), GUIIconSubSys::getIcon(GUIIcon::SAVE), this, MID_SIMPLE_VIEW_EXPORT, GUIDesignButtonToolbar);
1758 GUIDesigns::buildFXButton(horizontalFrame, "", "", TL("Load setting from file"), GUIIconSubSys::getIcon(GUIIcon::OPEN), this, MID_SIMPLE_VIEW_IMPORT, GUIDesignButtonToolbar);
1759
1760 new FXVerticalSeparator(horizontalFrame);
1761 new FXLabel(horizontalFrame, TL("Export includes:"), nullptr, GUIDesignViewSettingsLabel1);
1762 mySaveViewPort = new FXCheckButton(horizontalFrame, TL("Viewport"));
1763 mySaveDelay = new FXCheckButton(horizontalFrame, TL("Delay"));
1764 mySaveDecals = new FXCheckButton(horizontalFrame, TL("Decals"));
1765 mySaveBreakpoints = new FXCheckButton(horizontalFrame, TL("Breakpoints"));
1766 if (mySettings->netedit) {
1767 mySaveBreakpoints->disable();
1768 }
1769}
1770
1771
1772void
1774 // tab for the background
1775 new FXTabItem(tabbook, TL("Background"), nullptr, GUIDesignViewSettingsTabItemBook1);
1776 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
1777 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
1778
1779 FXMatrix* matrixColor = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
1780 new FXLabel(matrixColor, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
1782
1783 FXVerticalFrame* verticalFrameDecals = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame3);
1784 new FXLabel(verticalFrameDecals, TL("Decals:"));
1785 myDecalsTable = new MFXDecalsTable(this, verticalFrameDecals);
1786 FXHorizontalFrame* horizontalFrameButtonsDecals = new FXHorizontalFrame(verticalFrameDecals, GUIDesignViewSettingsHorizontalFrame2);
1787 GUIDesigns::buildFXButton(horizontalFrameButtonsDecals, TL("&Load XML Decals"), "", "", nullptr, this, MID_SIMPLE_VIEW_LOAD_DECALS_XML, GUIDesignViewSettingsButton1);
1788 GUIDesigns::buildFXButton(horizontalFrameButtonsDecals, TL("&Save XML Decals"), "", "", nullptr, this, MID_SIMPLE_VIEW_SAVE_DECALS_XML, GUIDesignViewSettingsButton1);
1789 GUIDesigns::buildFXButton(horizontalFrameButtonsDecals, TL("&Clear Decals"), "", "", nullptr, this, MID_SIMPLE_VIEW_CLEAR_DECALS, GUIDesignViewSettingsButton1);
1790
1791 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
1792
1793 FXMatrix* matrixGrid = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix1);
1794 myShowGrid = new FXCheckButton(matrixGrid, TL("Toggle grid"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1795 myShowGrid->setCheck(mySettings->showGrid);
1796 new FXLabel(matrixGrid, "");
1797 FXMatrix* matrixGridX = new FXMatrix(matrixGrid, 2, GUIDesignViewSettingsMatrix2);
1798 new FXLabel(matrixGridX, TL("x-spacing"), nullptr, GUIDesignViewSettingsLabel1);
1799 myGridXSizeDialer = new FXRealSpinner(matrixGridX, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
1800 myGridXSizeDialer->setRange(1, 10000);
1802 FXMatrix* matrixGridY = new FXMatrix(matrixGrid, 2, GUIDesignViewSettingsMatrix2);
1803 new FXLabel(matrixGridY, TL("y-spacing"), nullptr, GUIDesignViewSettingsLabel1);
1804 myGridYSizeDialer = new FXRealSpinner(matrixGridY, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
1805 myGridYSizeDialer->setRange(1, 10000);
1807}
1808
1809
1810void
1812 new FXTabItem(tabbook, TL("Streets"), nullptr, GUIDesignViewSettingsTabItemBook1);
1813 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
1814 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
1815 // ... color settings
1816 FXVerticalFrame* verticalFrameColor = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame6);
1817 FXMatrix* matrixColor = new FXMatrix(verticalFrameColor, 5, GUIDesignViewSettingsMatrix3);
1818 new FXLabel(matrixColor, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
1821 myLaneColorInterpolation = new FXCheckButton(matrixColor, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1822 myLaneColorSettingFrame = new FXVerticalFrame(verticalFrameColor, GUIDesignViewSettingsVerticalFrame4);
1826 myMeanDataID->hide();
1827 myParamKey = new FXComboBox(matrixColor, 1, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignComboBoxStatic);
1828 myParamKey->setEditable(true);
1829 myParamKey->disable();
1830
1831 // rainbow settings
1832 myEdgeRainbowPanel = new RainbowPanel(verticalFrameColor, this, mySettings->edgeValueRainBow);
1833
1834 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
1835 // ... scale settings
1836 FXVerticalFrame* verticalFrameScale = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame6);
1837 FXMatrix* matrixScale = new FXMatrix(verticalFrameScale, 5, GUIDesignViewSettingsMatrix3);
1838 new FXLabel(matrixScale, TL("Scale width"), nullptr, GUIDesignViewSettingsLabel1);
1841 myLaneScaleInterpolation = new FXCheckButton(matrixScale, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1842 myLaneScaleSettingFrame = new FXVerticalFrame(verticalFrameScale, GUIDesignViewSettingsVerticalFrame4);
1843 myScalingParamKey = new FXComboBox(matrixScale, 1, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignComboBoxStatic);
1844 myScalingParamKey->setEditable(true);
1845 myScalingParamKey->disable();
1846
1850 } else {
1853 }
1854
1855 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
1856 FXMatrix* matrixLanes = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix1);
1857
1858 myShowBikeMarkings = new FXCheckButton(matrixLanes, TL("Show bike markings"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1860 myShowLaneDecals = new FXCheckButton(matrixLanes, TL("Show turning arrows"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1862
1863 myShowLinkRules = new FXCheckButton(matrixLanes, TL("Show right-of-way rules"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1865 myRealisticLinkRules = new FXCheckButton(matrixLanes, TL("Realistic stop line colors"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1867
1868 myShowLaneBorders = new FXCheckButton(matrixLanes, TL("Show lane borders"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1870 myShowLaneDirection = new FXCheckButton(matrixLanes, TL("Show lane direction"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1872
1873 myHideMacroConnectors = new FXCheckButton(matrixLanes, TL("Hide macro connectors"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1875 myShowSublanes = new FXCheckButton(matrixLanes, TL("Show sublanes"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1877
1878 myShowRails = new FXCheckButton(matrixLanes, TL("Show rails"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1879 myShowRails->setCheck(mySettings->showRails);
1880
1881 mySpreadSuperposed = new FXCheckButton(matrixLanes, TL("Spread bidirectional railways/roads"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1882 mySpreadSuperposed->setHelpText(TL("Make both directional edges for a bidirectional railways or roads visible"));
1884
1885 mySecondaryShape = new FXCheckButton(matrixLanes, TL("Secondary shape"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1887 new FXLabel(matrixLanes, " ", nullptr, GUIDesignViewSettingsLabel1);
1888
1889 FXMatrix* tmp0 = new FXMatrix(matrixLanes, 2, GUIDesignViewSettingsMatrix5);
1890 new FXLabel(tmp0, TL("Exaggerate width by"), nullptr, GUIDesignViewSettingsLabel1);
1892 myLaneWidthUpscaleDialer->setRange(0, 1000000);
1894
1895 FXMatrix* tmp1 = new FXMatrix(matrixLanes, 2, GUIDesignViewSettingsMatrix5);
1896 new FXLabel(tmp1, TL("Minimum size"), nullptr, GUIDesignViewSettingsLabel1);
1898 myLaneMinWidthDialer->setRange(0, 1000000);
1900
1901 // edge name
1902 myEdgeNamePanel = new NamePanel(matrixLanes, this, TL("Show edge id"), mySettings->edgeName);
1903 myStreetNamePanel = new NamePanel(matrixLanes, this, TL("Show street name"), mySettings->streetName);
1904 myEdgeValuePanel = new NamePanel(matrixLanes, this, TL("Show edge color value"), mySettings->edgeValue);
1905 myEdgeScaleValuePanel = new NamePanel(matrixLanes, this, TL("Show edge scale value"), mySettings->edgeScaleValue);
1906}
1907
1908
1909void
1911 new FXTabItem(tabbook, TL("Vehicles"), nullptr, GUIDesignViewSettingsTabItemBook1);
1912 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
1913 FXVerticalFrame* verticalframe = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
1914
1915 FXMatrix* matrixShowAs = new FXMatrix(verticalframe, 2, GUIDesignViewSettingsMatrix3);
1916 new FXLabel(matrixShowAs, TL("Show As"), nullptr, GUIDesignViewSettingsLabel1);
1919 myVehicleShapeDetail->appendIconItem(TL("'triangles'"));
1921 myVehicleShapeDetail->appendIconItem(TL("'simple shapes'"));
1922 myVehicleShapeDetail->appendIconItem(TL("'raster images'"));
1923 myVehicleShapeDetail->appendIconItem(TL("'circles'"));
1925
1926 new FXHorizontalSeparator(verticalframe, GUIDesignHorizontalSeparator);
1927
1928 FXMatrix* matrixColor = new FXMatrix(verticalframe, 4, GUIDesignViewSettingsMatrix3);
1929 new FXLabel(matrixColor, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
1933 myVehicleColorInterpolation = new FXCheckButton(matrixColor, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1934 myVehicleParamKey = new FXComboBox(matrixColor, 1, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignComboBoxStatic);
1935 myVehicleParamKey->setEditable(true);
1936 myVehicleParamKey->disable();
1937
1938 myVehicleColorSettingFrame = new FXVerticalFrame(verticalframe, GUIDesignViewSettingsVerticalFrame4);
1939 new FXHorizontalSeparator(verticalframe, GUIDesignHorizontalSeparator);
1940
1941 // vehicle scale settings
1942 FXVerticalFrame* verticalFrameScale = new FXVerticalFrame(verticalframe, GUIDesignViewSettingsVerticalFrame6);
1943 FXMatrix* matrixScale = new FXMatrix(verticalFrameScale, 4, GUIDesignViewSettingsMatrix3);
1944 new FXLabel(matrixScale, TL("Scale size"), nullptr, GUIDesignViewSettingsLabel1);
1947 myVehicleScaleInterpolation = new FXCheckButton(matrixScale, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
1948 myVehicleScalingParamKey = new FXComboBox(matrixScale, 1, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignComboBoxStatic);
1949 myVehicleScalingParamKey->setEditable(true);
1950 myVehicleScalingParamKey->disable();
1951 myVehicleScaleSettingFrame = new FXVerticalFrame(verticalFrameScale, GUIDesignViewSettingsVerticalFrame4);
1953 new FXHorizontalSeparator(verticalframe, GUIDesignHorizontalSeparator);
1954
1955 FXMatrix* matrixVehicle = new FXMatrix(verticalframe, 2, GUIDesignMatrixViewSettings);
1956 myVehicleNamePanel = new NamePanel(matrixVehicle, this, TL("Show vehicle id"), mySettings->vehicleName);
1957 myVehicleValuePanel = new NamePanel(matrixVehicle, this, TL("Show vehicle color value"), mySettings->vehicleValue);
1958 myVehicleScaleValuePanel = new NamePanel(matrixVehicle, this, TL("Show vehicle scale value"), mySettings->vehicleScaleValue);
1959 myVehicleTextPanel = new NamePanel(matrixVehicle, this, TL("Show vehicle text param"), mySettings->vehicleText);
1961 myVehicleTextParamKey->setEditable(true);
1962 //new FXHorizontalSeparator(verticalframe, GUIDesignHorizontalSeparator);
1963
1964 FXMatrix* matrixShow = new FXMatrix(verticalframe, 2, GUIDesignMatrixViewSettings);
1965 myShowBlinker = new FXCheckButton(matrixShow, TL("Show blinker / brake lights"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1967 myShowMinGap = new FXCheckButton(matrixShow, TL("Show minimum gap"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1969 myShowBrakeGap = new FXCheckButton(matrixShow, TL("Show brake gap"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1971 myShowBTRange = new FXCheckButton(matrixShow, TL("Show Bluetooth range"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1973 myShowRouteIndex = new FXCheckButton(matrixShow, TL("Show route index"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1975 myScaleLength = new FXCheckButton(matrixShow, TL("Scale length with geometry"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1977 myShowParkingInfo = new FXCheckButton(matrixShow, TL("Show parking info"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1979 myShowChargingInfo = new FXCheckButton(matrixShow, TL("Show charging info"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1981 myDrawReversed = new FXCheckButton(matrixShow, TL("Draw reversed vehicles in reverse"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1983 //new FXLabel(matrixShow, " ", nullptr, GUIDesignViewSettingsLabel1);
1984 //myShowLaneChangePreference = new FXCheckButton(matrixShow, TL("Show lane change preference"), this, MID_SIMPLE_VIEW_COLORCHANGE);
1985 //myShowLaneChangePreference->setCheck(mySettings->drawLaneChangePreference);
1986 //tmpc = new FXCheckButton(matrixShow, TL("Show needed headway"), 0 ,0);
1987 //tmpc->disable();
1988
1989 //new FXHorizontalSeparator(frame3, GUIDesignHorizontalSeparator);
1990
1991 FXMatrix* matrixSize = new FXMatrix(verticalframe, 2, GUIDesignViewSettingsMatrix1);
1993}
1994
1995
1996void
1998 new FXTabItem(tabbook, TL("Persons"), nullptr, GUIDesignViewSettingsTabItemBook1);
1999 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2000 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2001
2002 FXMatrix* m101 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix3);
2003 new FXLabel(m101, TL("Show As"), nullptr, GUIDesignViewSettingsLabel1);
2006 myPersonShapeDetail->appendIconItem(TL("'triangles'"));
2007 myPersonShapeDetail->appendIconItem(TL("'circles'"));
2008 myPersonShapeDetail->appendIconItem(TL("'simple shapes'"));
2009 myPersonShapeDetail->appendIconItem(TL("'raster images'"));
2011
2012 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2013
2014 FXMatrix* m102 = new FXMatrix(verticalFrame, 3, GUIDesignViewSettingsMatrix3);
2015 new FXLabel(m102, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2019 myPersonColorInterpolation = new FXCheckButton(m102, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2020
2021 myPersonColorSettingFrame = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame4);
2022
2023 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2024
2025 FXMatrix* m103 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2026 myPersonNamePanel = new NamePanel(m103, this, TL("Show person id"), mySettings->personName);
2027 myPersonValuePanel = new NamePanel(m103, this, TL("Show person color value"), mySettings->personValue);
2028
2029 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2030
2031 FXMatrix* m104 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix1);
2033
2034 FXMatrix* m105 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix3);
2035 myShowPedestrianNetwork = new FXCheckButton(m105, TL("Show JuPedSim pedestrian network"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2038#ifdef JPS_VERSION
2039 if (mySettings->netedit) {
2040#endif
2041 myShowPedestrianNetwork->disable();
2042 myPedestrianNetworkColor->disable();
2043#ifdef JPS_VERSION
2044 }
2045#endif
2046}
2047
2048
2049void
2051 new FXTabItem(tabbook, TL("Containers"), nullptr, GUIDesignViewSettingsTabItemBook1);
2052 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2053 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2054
2055 FXMatrix* m101 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix3);
2056 new FXLabel(m101, TL("Show As"), nullptr, GUIDesignViewSettingsLabel1);
2059 myContainerShapeDetail->appendIconItem(TL("'triangles'"));
2061 myContainerShapeDetail->appendIconItem(TL("'simple shapes'"));
2062 myContainerShapeDetail->appendIconItem(TL("'raster images'"));
2064
2065 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2066
2067 FXMatrix* m102 = new FXMatrix(verticalFrame, 3, GUIDesignViewSettingsMatrix3);
2068 new FXLabel(m102, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2072 myContainerColorInterpolation = new FXCheckButton(m102, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2073
2074 myContainerColorSettingFrame = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame4);
2075
2076 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2077
2078 FXMatrix* m103 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2079 myContainerNamePanel = new NamePanel(m103, this, TL("Show container id"), mySettings->containerName);
2080
2081 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2082
2083 FXMatrix* m104 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix1);
2085}
2086
2087
2088void
2090 new FXTabItem(tabbook, TL("Junctions"), nullptr, GUIDesignViewSettingsTabItemBook1);
2091 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2092 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2093 FXMatrix* m41 = new FXMatrix(verticalFrame, 3, GUIDesignViewSettingsMatrix3);
2094 new FXLabel(m41, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2099
2100 myJunctionColorSettingFrame = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame4);
2102
2103 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2104 FXMatrix* m42 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2106 myDrawJunctionShape = new FXCheckButton(m42, TL("Draw junction shape"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2108 myDrawCrossingsAndWalkingAreas = new FXCheckButton(m42, TL("Draw crossings/walkingareas"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2110 myShowLane2Lane = new FXCheckButton(m42, TL("Show lane to lane connections"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2112 new FXLabel(m42, " ", nullptr, GUIDesignViewSettingsLabel1);
2113
2114 myTLIndexPanel = new NamePanel(m42, this, TL("Show link tls index"), mySettings->drawLinkTLIndex);
2115 myJunctionIndexPanel = new NamePanel(m42, this, TL("Show link junction index"), mySettings->drawLinkJunctionIndex);
2116 myJunctionIDPanel = new NamePanel(m42, this, TL("Show junction id"), mySettings->junctionID);
2117 myInternalJunctionNamePanel = new NamePanel(m42, this, TL("Show internal junction id"), mySettings->internalJunctionName);
2118 myInternalEdgeNamePanel = new NamePanel(m42, this, TL("Show internal edge id"), mySettings->internalEdgeName);
2119 myCwaEdgeNamePanel = new NamePanel(m42, this, TL("Show crossing and walkingarea id"), mySettings->cwaEdgeName);
2120 myTLSPhaseIndexPanel = new NamePanel(m42, this, TL("Show traffic light phase index"), mySettings->tlsPhaseIndex);
2121 myTLSPhaseNamePanel = new NamePanel(m42, this, TL("Show traffic light phase name"), mySettings->tlsPhaseName);
2122 myJunctionNamePanel = new NamePanel(m42, this, TL("Show junction name"), mySettings->junctionName);
2123}
2124
2125
2126void
2128 new FXTabItem(tabbook, TL("Additional"), nullptr, GUIDesignViewSettingsTabItemBook1);
2129 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2130 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2131 // IDs
2132 FXMatrix* matrixIDs = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2133 myAddNamePanel = new NamePanel(matrixIDs, this, TL("Show object id"), mySettings->addName);
2134 myAddFullNamePanel = new NamePanel(matrixIDs, this, TL("Show full name"), mySettings->addFullName);
2135 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2136 //Sizes
2137 FXMatrix* matrixSizes = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2139 // color
2140 FXMatrix* matrixColor = new FXMatrix(verticalFrame, 3, GUIDesignMatrixViewSettings);
2141 new FXLabel(matrixColor, TL("StoppingPlace"), nullptr, GUIDesignViewSettingsLabel1);
2142 new FXLabel(matrixColor, TL("body"), nullptr, GUIDesignViewSettingsLabel1);
2143 new FXLabel(matrixColor, TL("sign"), nullptr, GUIDesignViewSettingsLabel1);
2144 new FXLabel(matrixColor, "busStops", nullptr, GUIDesignViewSettingsLabel1);
2147 new FXLabel(matrixColor, "trainStops", nullptr, GUIDesignViewSettingsLabel1);
2150 new FXLabel(matrixColor, "containerStops", nullptr, GUIDesignViewSettingsLabel1);
2153 new FXLabel(matrixColor, "chargingStations", nullptr, GUIDesignViewSettingsLabel1);
2156}
2157
2158
2159void
2161 new FXTabItem(tabbook, TL("Demand"), nullptr, GUIDesignViewSettingsTabItemBook1);
2162 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2163 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2164 // elements
2165 FXMatrix* demandMatrix = new FXMatrix(verticalFrame, 3, GUIDesignMatrixViewSettings);
2166 new FXLabel(demandMatrix, TL("element"), nullptr, GUIDesignViewSettingsLabel1);
2167 new FXLabel(demandMatrix, TL("color"), nullptr, GUIDesignViewSettingsLabel1);
2168 new FXLabel(demandMatrix, TL("width"), nullptr, GUIDesignViewSettingsLabel1);
2169 new FXLabel(demandMatrix, "trips", nullptr, GUIDesignViewSettingsLabel1);
2171 myTripWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2173 new FXLabel(demandMatrix, "personTrips", nullptr, GUIDesignViewSettingsLabel1);
2175 myPersonTripWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2177 new FXLabel(demandMatrix, "walks", nullptr, GUIDesignViewSettingsLabel1);
2179 myWalkWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2181 new FXLabel(demandMatrix, "rides", nullptr, GUIDesignViewSettingsLabel1);
2183 myRideWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2185 new FXLabel(demandMatrix, "transport", nullptr, GUIDesignViewSettingsLabel1);
2187 myTransportWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2189 new FXLabel(demandMatrix, "tranship", nullptr, GUIDesignViewSettingsLabel1);
2191 myTranshipWidth = new FXRealSpinner(demandMatrix, 10, target, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2193 // stops
2194 FXMatrix* stopMatrix = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2195 new FXLabel(stopMatrix, "stop", nullptr, GUIDesignViewSettingsLabel1);
2197 new FXLabel(stopMatrix, "waypoint", nullptr, GUIDesignViewSettingsLabel1);
2199 new FXLabel(stopMatrix, "stop (persons)", nullptr, GUIDesignViewSettingsLabel1);
2201 new FXLabel(stopMatrix, "stop (containers)", nullptr, GUIDesignViewSettingsLabel1);
2203}
2204
2205
2206void
2208 new FXTabItem(tabbook, TL("POIs"), nullptr, GUIDesignViewSettingsTabItemBook1);
2209 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2210 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2211
2212 FXMatrix* m63 = new FXMatrix(verticalFrame, 3, GUIDesignViewSettingsMatrix3);
2213 new FXLabel(m63, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2217 myPOIColorInterpolation = new FXCheckButton(m63, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2218 myPOIColorSettingFrame = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame4);
2219
2220 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2221
2222 FXMatrix* m61 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2223
2224 new FXLabel(m61, TL("POI detail"), nullptr, GUIDesignViewSettingsLabel1);
2226 myPoiDetail->setRange(3, 100);
2227 myPoiDetail->setValue(mySettings->poiDetail);
2228
2229 myPOIUseCustomLayer = new FXCheckButton(m61, TL("Custom Layer"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2232 myPOICustomLayer->setRange(-std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
2234
2235 myPOINamePanel = new NamePanel(m61, this, TL("Show poi id"), mySettings->poiName);
2236 myPOITypePanel = new NamePanel(m61, this, TL("Show poi type"), mySettings->poiType);
2237 myPOITextPanel = new NamePanel(m61, this, TL("Show poi text param"), mySettings->poiText);
2239 myPOITextParamKey->setEditable(true);
2240
2241 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2242
2243 FXMatrix* m62 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2245}
2246
2247
2248void
2250 new FXTabItem(tabbook, TL("Polygons"), nullptr, GUIDesignViewSettingsTabItemBook1);
2251 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2252 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2253
2254 FXMatrix* m63 = new FXMatrix(verticalFrame, 3, GUIDesignViewSettingsMatrix3);
2255 new FXLabel(m63, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2259 myPolyColorInterpolation = new FXCheckButton(m63, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2260 myPolyColorSettingFrame = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame4);
2261
2262 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2263
2264 FXMatrix* m91 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2265
2266 myPolyUseCustomLayer = new FXCheckButton(m91, TL("Custom Layer"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2269 myPolyCustomLayer->setRange(-std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
2271
2272 myPolyNamePanel = new NamePanel(m91, this, TL("Show polygon id"), mySettings->polyName);
2273 myPolyTypePanel = new NamePanel(m91, this, TL("Show polygon types"), mySettings->polyType);
2274 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2275
2277}
2278
2279
2280void
2282 new FXTabItem(tabbook, TL("Selection"), nullptr, GUIDesignViewSettingsTabItemBook1);
2283 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2284 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2285
2286 FXMatrix* m102 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2287 new FXLabel(m102, TL("Default Selection Color"), nullptr, GUIDesignViewSettingsLabel1);
2288 new FXLabel(m102, "", nullptr, GUIDesignViewSettingsLabel1);
2289
2290 new FXLabel(m102, TL("Miscellaneous"), nullptr, GUIDesignViewSettingsLabel1);
2292 new FXLabel(m102, "Edge", nullptr, GUIDesignViewSettingsLabel1);
2294 new FXLabel(m102, "Lane Edge", nullptr, GUIDesignViewSettingsLabel1);
2296 new FXLabel(m102, "Connection", nullptr, GUIDesignViewSettingsLabel1);
2298 new FXLabel(m102, "Prohibition", nullptr, GUIDesignViewSettingsLabel1);
2300 new FXLabel(m102, "Crossing", nullptr, GUIDesignViewSettingsLabel1);
2302 new FXLabel(m102, "Additional", nullptr, GUIDesignViewSettingsLabel1);
2304 new FXLabel(m102, "Route", nullptr, GUIDesignViewSettingsLabel1);
2306 new FXLabel(m102, "Vehicle", nullptr, GUIDesignViewSettingsLabel1);
2308 new FXLabel(m102, "Person", nullptr, GUIDesignViewSettingsLabel1);
2310 new FXLabel(m102, "PersonPlan", nullptr, GUIDesignViewSettingsLabel1);
2312 new FXLabel(m102, "edgeData", nullptr, GUIDesignViewSettingsLabel1);
2314}
2315
2316
2317void
2319 new FXTabItem(tabbook, TL("Data"), nullptr, GUIDesignViewSettingsTabItemBook1);
2320 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2321 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2322 // ... color settings
2323 FXVerticalFrame* verticalFrame2 = new FXVerticalFrame(verticalFrame, GUIDesignViewSettingsVerticalFrame6);
2324 FXMatrix* m111 = new FXMatrix(verticalFrame2, 4, GUIDesignViewSettingsMatrix3);
2325 new FXLabel(m111, TL("Color"), nullptr, GUIDesignViewSettingsLabel1);
2328 myDataColorInterpolation = new FXCheckButton(m111, TL("Interpolate"), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignCheckButtonViewSettings);
2329 myDataColorSettingFrame = new FXVerticalFrame(verticalFrame2, GUIDesignViewSettingsVerticalFrame4);
2331 myDataParamKey->setEditable(true);
2332 myDataParamKey->disable();
2334
2335 // rainbow settings
2336 myDataRainbowPanel = new RainbowPanel(verticalFrame2, this, mySettings->dataValueRainBow);
2337
2338 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2339 FXMatrix* m112 = new FXMatrix(verticalFrame, 2, GUIDesignViewSettingsMatrix1);
2340
2341 new FXLabel(m112, TL("Exaggerate edgeRelation width by"), nullptr, GUIDesignViewSettingsLabel1);
2343 myEdgeRelationUpscaleDialer->setRange(0, 1000000);
2345
2346 new FXLabel(m112, TL("Exaggerate tazRelation width by"), nullptr, GUIDesignViewSettingsLabel1);
2348 myTazRelationUpscaleDialer->setRange(0, 1000000);
2350
2351 // text decoration
2352 myDataValuePanel = new NamePanel(m112, this, TL("Show data color value"), mySettings->dataValue);
2353}
2354
2355
2356void
2358 new FXTabItem(tabbook, TL("Legend"), nullptr, GUIDesignViewSettingsTabItemBook1);
2359 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2360 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2361
2362 FXMatrix* m72 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2363 myShowSizeLegend = new FXCheckButton(m72, TL("Show Size Legend"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2365 new FXLabel(m72, "");
2366 myShowColorLegend = new FXCheckButton(m72, TL("Show Edge Color Legend"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2368 new FXLabel(m72, "");
2369 myShowVehicleColorLegend = new FXCheckButton(m72, TL("Show Vehicle Color Legend"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2371 new FXLabel(m72, "");
2372}
2373
2374
2375void
2377 new FXTabItem(tabbook, "openGL", nullptr, GUIDesignViewSettingsTabItemBook1);
2378 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2379 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2380
2381 FXMatrix* m80 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2382 myTrueZ = new FXCheckButton(m80, "Draw all objects at their true Z-level", this, MID_SIMPLE_VIEW_COLORCHANGE);
2383 myTrueZ->setCheck(mySettings->trueZ);
2384 FXMatrix* m81 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2385 new FXLabel(m81, TL("Combobox max rows"), nullptr, GUIDesignViewSettingsLabel1);
2386 myComboRows = new FXRealSpinner(m81, 10, this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsSpinDial1);
2388 FXMatrix* m82 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2389 myDisableHideByZoom = new FXCheckButton(m82, TL("Disable hide by zoom"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2390 myDisableHideByZoom->setHelpText(TL("Disable hiding edges with high zoom out"));
2392 FXMatrix* m83 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2393 myDither = new FXCheckButton(m83, TL("Dither"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2394 myDither->setCheck(mySettings->dither);
2395 FXMatrix* m84 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2396 myFPS = new FXCheckButton(m84, "FPS", this, MID_SIMPLE_VIEW_COLORCHANGE);
2397 myFPS->setCheck(mySettings->fps);
2398 FXMatrix* m85 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2399 myDrawBoundaries = new FXCheckButton(m85, TL("Draw boundaries"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2401 FXMatrix* m86 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2402 myForceDrawForRectangleSelection = new FXCheckButton(m86, TL("Force draw for rectangle selection"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2404 FXMatrix* m87 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2405 myDisableDottedContours = new FXCheckButton(m87, TL("Disable dotted contours during selection/deletion"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2407 FXMatrix* m88 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2408 myRecalculateBoundaries = GUIDesigns::buildFXButton(m88, TL("Recalculate boundaries"), "", "", nullptr, this, MID_SIMPLE_VIEW_COLORCHANGE,
2409 (BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT), 0, 0, 0, 0, 20, 20, 4, 4);
2410 FXMatrix* m89 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2411 myGeometryIndicesPanel = new NamePanel(m89, this, TL("Show geometry point indices"), mySettings->geometryIndices);
2412}
2413
2414
2415void
2417 myFrame3D = new FXTabItem(tabbook, TL("3D view"), nullptr, GUIDesignViewSettingsTabItemBook1);
2418 FXScrollWindow* scrollWindow = new FXScrollWindow(tabbook);
2419 FXVerticalFrame* verticalFrame = new FXVerticalFrame(scrollWindow, GUIDesignViewSettingsVerticalFrame2);
2420
2421 FXMatrix* m82 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2422 myShow3DTLSLinkMarkers = new FXCheckButton(m82, TL("Show TLS link markers"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2424 //FXMatrix* m83 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2425 myShow3DTLSDomes = new FXCheckButton(m82, TL("Show domes around TLS models from decals"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2427 //FXMatrix* m84 = new FXMatrix(verticalFrame, 1, GUIDesignMatrixViewSettings);
2428 myGenerate3DTLSModels = new FXCheckButton(m82, TL("Show auto-generated TLS models"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2430 myShow3DHeadUpDisplay = new FXCheckButton(m82, TL("Show head-up display"), this, MID_SIMPLE_VIEW_COLORCHANGE);
2432
2433 new FXHorizontalSeparator(verticalFrame, GUIDesignHorizontalSeparator);
2434
2435 FXMatrix* m2 = new FXMatrix(verticalFrame, 2, GUIDesignMatrixViewSettings);
2436 new FXLabel(m2, TL("Sun brightness"), nullptr, GUIDesignViewSettingsLabel1);
2438 myLight3DFactor->setRange(0, 255);
2440 /*
2441 new FXLabel(m2, "Ambient", nullptr, GUIDesignViewSettingsLabel1);
2442 myAmbient3DLight = new FXColorWell(m2, MFXUtils::getFXColor(mySettings->ambient3DLight), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsColorWell);
2443 myAmbient3DLight->setOpaqueOnly(true);
2444 new FXLabel(m2, "Diffuse", nullptr, GUIDesignViewSettingsLabel1);
2445 myDiffuse3DLight = new FXColorWell(m2, MFXUtils::getFXColor(mySettings->diffuse3DLight), this, MID_SIMPLE_VIEW_COLORCHANGE, GUIDesignViewSettingsColorWell);
2446 myDiffuse3DLight->setOpaqueOnly(true);
2447 */
2448 new FXLabel(m2, TL("Sky color"), nullptr, GUIDesignViewSettingsLabel1);
2450 mySkyColor->setOpaqueOnly(true);
2451
2452#ifdef HAVE_OSG
2454#else
2455 myFrame3D->disable();
2456#endif
2457}
2458
2459
2460void
2461GUIDialog_ViewSettings::buildButtons(FXVerticalFrame* contentFrame) {
2462 FXHorizontalFrame* horizontalFrameButtons = new FXHorizontalFrame(contentFrame, GUIDesignViewSettingsHorizontalFrame2);
2463 FXButton* OK = GUIDesigns::buildFXButton(horizontalFrameButtons, TL("&OK"), "", "", nullptr, this, MID_SETTINGS_OK, GUIDesignViewSettingsButton2);
2464 GUIDesigns::buildFXButton(horizontalFrameButtons, TL("&Cancel"), "", "", nullptr, this, MID_SETTINGS_CANCEL, GUIDesignViewSettingsButton3);
2465 OK->setFocus();
2466}
2467
2468/****************************************************************************/
long long int SUMOTime
Definition GUI.h:36
@ MID_SIMPLE_VIEW_NAMECHANGE
Informs the dialog about switching to another scheme.
Definition GUIAppEnum.h:631
@ MID_SIMPLE_VIEW_CLEAR_DECALS
For the clear-decals - button.
Definition GUIAppEnum.h:647
@ MID_SIMPLE_VIEW_RAINBOW_CHANGE
For changing rainbow style.
Definition GUIAppEnum.h:649
@ MID_SIMPLE_VIEW_SAVE
For the save-to-db - button.
Definition GUIAppEnum.h:633
@ MID_SIMPLE_VIEW_IMPORT
For the import-from-file - button.
Definition GUIAppEnum.h:639
@ MID_SIMPLE_VIEW_EXPORT
For the export-to-file - button.
Definition GUIAppEnum.h:637
@ MID_SIMPLE_VIEW_DELETE
For the delete - button.
Definition GUIAppEnum.h:635
@ MID_SIMPLE_VIEW_LOAD_DECALS_XML
For the load-decals - button.
Definition GUIAppEnum.h:643
@ MID_SIMPLE_VIEW_LOAD_DECAL
For the load-decals - button.
Definition GUIAppEnum.h:641
@ MID_SETTINGS_OK
Ok-button was pushed.
Definition GUIAppEnum.h:551
@ MID_SETTINGS_CANCEL
Cancel-button was pushed.
Definition GUIAppEnum.h:553
@ MID_SIMPLE_VIEW_SIZECHANGE
Informs the dialog about a size value's change.
Definition GUIAppEnum.h:629
@ MID_SIMPLE_VIEW_COLORCHANGE
Informs the dialog about a value's change.
Definition GUIAppEnum.h:627
@ MID_SIMPLE_VIEW_SAVE_DECALS_XML
For the save-decals - button.
Definition GUIAppEnum.h:645
GUICompleteSchemeStorage gSchemeStorage
#define GUIDesignViewSettingsColorWell2
Definition GUIDesigns.h:588
#define GUIDesignViewSettingsMatrix3
Definition GUIDesigns.h:545
#define GUIDesignViewSettingsMainDialog
Definition GUIDesigns.h:516
#define GUIDesignViewSettingsMatrix5
Definition GUIDesigns.h:549
#define GUIDesignComboBoxStatic
Combo box static (not editable)
Definition GUIDesigns.h:302
#define GUIDesignViewSettingsComboBox1
Combo boxes.
Definition GUIDesigns.h:552
#define GUIDesignComboBoxWidth100
comboBox with thick frame, width 100
Definition GUIDesigns.h:314
#define GUIDesignViewSettingsHorizontalFrame3
Definition GUIDesigns.h:538
#define GUIDesignViewSettingsVerticalFrame6
Definition GUIDesigns.h:531
#define GUIDesignViewSettingsHorizontalFrame2
Definition GUIDesigns.h:536
#define GUIDesignViewSettingsButton2
Definition GUIDesigns.h:577
#define GUIDesignComboBoxVisibleItemsLarge
combo box large small
Definition GUIDesigns.h:56
#define GUIDesignButtonToolbar
little button with icon placed in navigation toolbar
Definition GUIDesigns.h:129
#define GUIDesignViewSettingsMatrix1
Matrix.
Definition GUIDesigns.h:541
#define GUIDesignViewSettingsColorWell1
Color wells.
Definition GUIDesigns.h:586
#define GUIDesignComboBoxVisibleItemsMedium
combo box medium small
Definition GUIDesigns.h:53
#define GUIDesignViewSettingsButton4
Definition GUIDesigns.h:581
#define GUIDesignViewSettingsDialog
Definition GUIDesigns.h:518
#define GUIDesignViewSettingsMatrix4
Definition GUIDesigns.h:547
#define GUIDesignViewSettingsSpinDial2
Definition GUIDesigns.h:559
#define GUIDesignViewSettingsButton5
Definition GUIDesigns.h:583
#define GUIDesignViewSettingsHorizontalFrame1
Horizontal frames.
Definition GUIDesigns.h:534
#define GUIDesignViewSettingsSpinDial1
Definition GUIDesigns.h:557
#define GUIDesignViewSettingsVerticalFrame5
Definition GUIDesigns.h:529
#define GUIDesignViewSettingsMatrix2
Definition GUIDesigns.h:543
#define GUIDesignViewSettingsLabel1
Label.
Definition GUIDesigns.h:567
#define GUIDesignViewSettingsTabBook1
Tab books.
Definition GUIDesigns.h:562
#define GUIDesignViewSettingsButton3
Definition GUIDesigns.h:579
#define GUIDesignMatrixViewSettings
FXMatrix used to pack values in Viewsettings.
Definition GUIDesigns.h:361
#define GUIDesignViewSettingsVerticalFrame2
Definition GUIDesigns.h:523
#define GUIDesignViewSettingsVerticalFrame3
Definition GUIDesigns.h:525
#define GUIDesignViewSettingsColorWell
ColorWell.
Definition GUIDesigns.h:555
#define GUIDesignHorizontalSeparator
Definition GUIDesigns.h:466
#define GUIDesignViewSettingsVerticalFrame4
Definition GUIDesigns.h:527
#define GUIDesignViewSettingsTabItemBook1
Definition GUIDesigns.h:564
#define GUIDesignViewSettingsVerticalFrame1
vertical frames
Definition GUIDesigns.h:521
#define GUIDesignViewSettingsLabel2
Definition GUIDesigns.h:569
#define GUIDesignViewSettingsTextField1
textFields
Definition GUIDesigns.h:572
#define GUIDesignCheckButtonViewSettings
CheckButton for Frames without thick extended over the frame.
Definition GUIDesigns.h:213
#define GUIDesignViewSettingsButton1
Buttons.
Definition GUIDesigns.h:575
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.
@ OPEN
open icons
@ SAVE_DATABASE
@ SAVE
save icons
#define TL(string)
Definition MsgHandler.h:315
std::string time2string(SUMOTime t, bool humanReadable)
convert SUMOTime to string (independently of global format setting)
Definition SUMOTime.cpp:69
@ 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
#define UNUSED_PARAMETER(x)
Definition StdDefs.h:30
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
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)
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.
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
FXCheckButton * myForceDrawForRectangleSelection
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)
FXCheckButton * myShow3DTLSLinkMarkers
3D
MFXComboBoxIcon * myPOIColorMode
POIs.
void updatePOIParams()
reload known POI parameters
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)
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.
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
static const std::string SCHEME_NAME_EDGEDATA_LIVE
GUIVisualizationTextSettings personValue
bool showLinkRules
Information whether link rules (colored bars) shall be drawn.
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.
GUIScaleScheme & getLaneEdgeScaleScheme()
Returns the current lane (edge) scaling schme.
bool polyUseCustomLayer
whether the rendering layer of polygons should be overriden
int getLaneEdgeMode() const
Returns the number of the active lane (edge) coloring schme.
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 schme.
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 schme.
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 crosings 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
ComboBox with icon.
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.
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 void deleteChildren(FXWindow *w)
Deletes all children of the given window.
Definition MFXUtils.cpp:30
static FXString getFilename2Write(FXWindow *parent, const FXString &header, const FXString &extension, FXIcon *icon, FXString &currentFolder)
Returns the file name to write.
Definition MFXUtils.cpp:82
static FXColor getFXColor(const RGBColor &col)
converts FXColor to RGBColor
Definition MFXUtils.cpp:112
static RGBColor getRGBColor(FXColor col)
converts FXColor to RGBColor
Definition MFXUtils.cpp:106
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 bool startsWith(const std::string &str, const std::string prefix)
Checks whether a given string starts with the prefix.
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;
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
@brif flag to avoid size changes
double personTripWidth
width for person trips