Path: blob/main/src/utils/gui/windows/GUIDialog_ViewSettings.h
169684 views
/****************************************************************************/1// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo2// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.3// This program and the accompanying materials are made available under the4// terms of the Eclipse Public License 2.0 which is available at5// https://www.eclipse.org/legal/epl-2.0/6// This Source Code may also be made available under the following Secondary7// Licenses when the conditions for such availability set forth in the Eclipse8// Public License 2.0 are satisfied: GNU General Public License, version 29// or later which is available at10// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html11// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later12/****************************************************************************/13/// @file GUIDialog_ViewSettings.h14/// @author Daniel Krajzewicz15/// @author Jakob Erdmann16/// @author Michael Behrisch17/// @date Wed, 21. Dec 200518///19// The dialog to change the view (gui) settings.20/****************************************************************************/21#pragma once22#include <config.h>2324#include <utils/foxtools/fxheader.h>25#include <utils/gui/windows/GUISUMOAbstractView.h>26#include <utils/gui/div/GUIPersistentWindowPos.h>27#include <utils/foxtools/MFXDecalsTable.h>282930// ===========================================================================31// class declarations32// ===========================================================================3334class MFXComboBoxIcon;3536// ===========================================================================37// class definitions38// ===========================================================================39/**40* @class GUIDialog_ViewSettings41* @brief The dialog to change the view (gui) settings.42*43* @todo Check whether saving/loading settings should be done via XML44*/45class GUIDialog_ViewSettings : public FXTopWindow, public GUIPersistentWindowPos {46/// @brief FOX Declaration47FXDECLARE(GUIDialog_ViewSettings)4849public:50/// @brief NamePanel51class NamePanel {5253public:54/// @brief constructor55NamePanel(FXMatrix* parent, GUIDialog_ViewSettings* target,56const std::string& title,57const GUIVisualizationTextSettings& settings);5859/// @brief get settings60GUIVisualizationTextSettings getSettings();6162/// @brief update63void update(const GUIVisualizationTextSettings& settings);6465/// @brief check button66FXCheckButton* myCheck = nullptr;6768/// @brief size dial69FXRealSpinner* mySizeDial = nullptr;7071/// @brief color well72FXColorWell* myColorWell = nullptr;7374/// @brief BGColor well75FXColorWell* myBGColorWell = nullptr;7677/// @brief draw only for selected?78FXCheckButton* mySelectedCheck = nullptr;7980/// @brief const size check81FXCheckButton* myConstSizeCheck = nullptr;8283/// @brief Matrix84FXMatrix* myMatrix0 = nullptr;85};8687/// @brief SizePanel88class SizePanel : public FXObject {89/// @brief FOX Declaration90FXDECLARE(SizePanel)9192public:93/// @brief constructor94SizePanel(FXMatrix* parent, GUIDialog_ViewSettings* target,95const GUIVisualizationSizeSettings& settings, GUIGlObjectType type);9697/// @brief get settings98GUIVisualizationSizeSettings getSettings();99100/// @brief update101void update(const GUIVisualizationSizeSettings& settings);102103/// @name FOX-callbacks104/// @{105/// @brief Called if something (color, width, etc.) has been changed106long onCmdSizeChange(FXObject* obj, FXSelector sel, void* ptr);107108/// @}109110/// @brief min size dial111FXRealSpinner* myMinSizeDial = nullptr;112113/// @brief exaggerate dial114FXRealSpinner* myExaggerateDial = nullptr;115116/// @brief check button117FXCheckButton* myCheck = nullptr;118119/// @brief check selected button120FXCheckButton* myCheckSelected = nullptr;121122protected:123/// @brief FOX needs this124FOX_CONSTRUCTOR(SizePanel)125126private:127/// @brief pointer to dialog viewSettings128GUIDialog_ViewSettings* myDialogViewSettings = nullptr;129130/// @brief GLObject type associated with this size131GUIGlObjectType myType = GLO_NETWORK;132};133134/// @brief NamePanel135class RainbowPanel {136137public:138/// @brief constructor139RainbowPanel(FXComposite* parent, GUIDialog_ViewSettings* target,140const GUIVisualizationRainbowSettings& settings);141142/// @brief get settings143GUIVisualizationRainbowSettings getSettings();144145/// @brief update146void update(const GUIVisualizationRainbowSettings& settings);147148FXButton* myColorRainbow = nullptr;149150MFXComboBoxIcon* myRainbowStyle = nullptr;151152/// @brief check button153FXCheckButton* myHideMinCheck = nullptr;154155/// @brief threshold dial156FXRealSpinner* myMinThreshold = nullptr;157158/// @brief check button159FXCheckButton* myHideMaxCheck = nullptr;160161/// @brief threshold dial162FXRealSpinner* myMaxThreshold = nullptr;163164/// @brief check button165FXCheckButton* mySetNeutral = nullptr;166167/// @brief threshold dial168FXRealSpinner* myNeutralThreshold = nullptr;169170/// @brief check button171FXCheckButton* myFixRange = nullptr;172};173174/** @brief Constructor175* @param[in] parent The view to report changed settings to176* @param[in, out] settings The current settings that can be changed177*/178GUIDialog_ViewSettings(GUISUMOAbstractView* parent, GUIVisualizationSettings* settings);179180/// @brief FOX need this181GUIDialog_ViewSettings() : myBackup("DUMMY") {}182183/// @brief Destructor184~GUIDialog_ViewSettings();185186/// @brief show view settings dialog187void show();188using FXTopWindow::show; // to silence the warning C4266 about a hidden function189190/// @brief get GUISUMOAbstractView parent191GUISUMOAbstractView* getSUMOAbstractView();192193/** @brief Sets current settings (called if reopened)194* @param[in, out] settings The current settings that can be changed195*/196void setCurrent(GUIVisualizationSettings* settings);197198/// @brief keyboard functions199//@{200long onKeyPress(FXObject* o, FXSelector sel, void* data);201//@}202203/// @name FOX-callbacks204/// @{205206/// @brief Called if the OK-button was pressed207long onCmdOk(FXObject*, FXSelector, void*);208209/// @brief Called if the Cancel-button was pressed210long onCmdCancel(FXObject*, FXSelector, void*);211212/// @brief Called if something (color, width, etc.) has been changed213long onCmdColorChange(FXObject*, FXSelector, void*);214215/// @brief Called if the name of the scheme was changed216long onCmdNameChange(FXObject*, FXSelector, void*);217218/// @brief Called if the settings shall be saved into the registry219long onCmdSaveSetting(FXObject*, FXSelector, void* data);220221/// @brief Called when updating the button that allows to save the settings into the registry222long onUpdSaveSetting(FXObject*, FXSelector, void* data);223224/// @brief Called if the settings shall be deleted225long onCmdDeleteSetting(FXObject*, FXSelector, void* data);226227/// @brief Called when updating the button that allows to delete settings228long onUpdDeleteSetting(FXObject*, FXSelector, void* data);229230/// @brief Called if the settings shall be exported into a file231long onCmdExportSetting(FXObject*, FXSelector, void* data);232233/// @brief Called when updating the button that allows to export settings into a file234long onUpdExportSetting(FXObject*, FXSelector, void* data);235236/// @brief Called if the settings shall be read from a file237long onCmdImportSetting(FXObject*, FXSelector, void* data);238239/// @brief Called when updating the button that allows to read settings from a file240long onUpdImportSetting(FXObject*, FXSelector, void* data);241242/// @brief Called if the decal shall be loaded from a file243long onCmdLoadDecal(FXObject*, FXSelector, void* data);244245/// @brief Called if the decals shall be loaded from a file246long onCmdLoadXMLDecals(FXObject*, FXSelector, void* data);247248/// @brief Called if the decals shall be saved to a file249long onCmdSaveXMLDecals(FXObject*, FXSelector, void* data);250251/// @brief Called if the decals shall be cleared252long onCmdClearDecals(FXObject*, FXSelector, void* data);253/// @}254255/** @brief Returns the name of the currently chosen scheme256* @return The name of the edited (chosen) scheme)257*/258std::string getCurrentScheme() const;259260/** @brief Sets the named scheme as the current261* @param[in] The name of the scheme that shall be set as current262*/263void setCurrentScheme(const std::string&);264265void hide() {266saveWindowPos();267FXTopWindow::hide();268}269270protected:271/// @brief The parent view (which settings are changed)272GUISUMOAbstractView* myParent = nullptr;273274/// @brief The current settings275GUIVisualizationSettings* mySettings = nullptr;276277/// @brief A backup of the settings (used if the "Cancel" button is pressed)278GUIVisualizationSettings myBackup;279280/// @name Dialog elements281/// @{282283MFXComboBoxIcon* mySchemeName = nullptr;284FXCheckButton* myShowGrid = nullptr;285FXRealSpinner* myGridXSizeDialer = nullptr;286FXRealSpinner* myGridYSizeDialer = nullptr;287288FXColorWell* myBackgroundColor = nullptr;289MFXDecalsTable* myDecalsTable = nullptr;290291/// @brief selection colors292FXColorWell* mySelectionColor = nullptr;293FXColorWell* mySelectedEdgeColor = nullptr;294FXColorWell* mySelectedLaneColor = nullptr;295FXColorWell* mySelectedConnectionColor = nullptr;296FXColorWell* mySelectedProhibitionColor = nullptr;297FXColorWell* mySelectedCrossingColor = nullptr;298FXColorWell* mySelectedAdditionalColor = nullptr;299FXColorWell* mySelectedRouteColor = nullptr;300FXColorWell* mySelectedVehicleColor = nullptr;301FXColorWell* mySelectedPersonColor = nullptr;302FXColorWell* mySelectedPersonPlanColor = nullptr;303FXColorWell* mySelectedEdgeDataColor = nullptr;304305/// @brief additional colors306FXColorWell* myBusStopColor = nullptr;307FXColorWell* myBusStopColorSign = nullptr;308FXColorWell* myTrainStopColor = nullptr;309FXColorWell* myTrainStopColorSign = nullptr;310FXColorWell* myContainerStopColor = nullptr;311FXColorWell* myContainerStopColorSign = nullptr;312FXColorWell* myChargingStationColor = nullptr;313FXColorWell* myChargingStationColorSign = nullptr;314FXColorWell* myStopColor = nullptr;315FXColorWell* myWaypointColor = nullptr;316FXColorWell* myVehicleTripsColor = nullptr;317FXColorWell* myStopPersonsColor = nullptr;318FXColorWell* myPersonTripColor = nullptr;319FXColorWell* myWalkColor = nullptr;320FXColorWell* myRideColor = nullptr;321FXColorWell* myStopContainersColor = nullptr;322FXColorWell* myTransportColor = nullptr;323FXColorWell* myTranshipColor = nullptr;324325/// @brief demand widths326327FXRealSpinner* myTripWidth = nullptr;328FXRealSpinner* myPersonTripWidth = nullptr;329FXRealSpinner* myWalkWidth = nullptr;330FXRealSpinner* myRideWidth = nullptr;331FXRealSpinner* myTransportWidth = nullptr;332FXRealSpinner* myTranshipWidth = nullptr;333334/// @brief ... lane colorer335MFXComboBoxIcon* myLaneEdgeColorMode = nullptr;336FXVerticalFrame* myLaneColorSettingFrame = nullptr;337std::vector<FXColorWell*> myLaneColors;338std::vector<FXRealSpinner*> myLaneThresholds;339std::vector<FXButton*> myLaneButtons;340FXCheckButton* myLaneColorInterpolation = nullptr;341FXComboBox* myParamKey = nullptr;342FXComboBox* myScalingParamKey = nullptr;343MFXComboBoxIcon* myMeanDataID = nullptr;344345/// @brief ... lane scaler346MFXComboBoxIcon* myLaneEdgeScaleMode = nullptr;347FXVerticalFrame* myLaneScaleSettingFrame = nullptr;348std::vector<FXRealSpinner*> myLaneScales;349std::vector<FXRealSpinner*> myLaneScaleThresholds;350std::vector<FXButton*> myLaneScaleButtons;351FXCheckButton* myLaneScaleInterpolation = nullptr;352353FXCheckButton* myShowLaneBorders = nullptr;354FXCheckButton* myShowBikeMarkings = nullptr;355FXCheckButton* myShowLaneDecals = nullptr;356FXCheckButton* myRealisticLinkRules = nullptr;357FXCheckButton* myShowLinkRules = nullptr;358FXCheckButton* myShowRails = nullptr;359FXCheckButton* mySecondaryShape = nullptr;360FXCheckButton* myHideMacroConnectors = nullptr;361FXCheckButton* myShowLaneDirection = nullptr;362FXCheckButton* myShowSublanes = nullptr;363FXCheckButton* mySpreadSuperposed = nullptr;364FXCheckButton* myDisableHideByZoom = nullptr;365FXRealSpinner* myLaneWidthUpscaleDialer = nullptr;366FXRealSpinner* myLaneMinWidthDialer = nullptr;367368/// @brief Vehicles369MFXComboBoxIcon* myVehicleColorMode, *myVehicleShapeDetail = nullptr;370FXVerticalFrame* myVehicleColorSettingFrame = nullptr;371std::vector<FXColorWell*> myVehicleColors;372std::vector<FXRealSpinner*> myVehicleThresholds;373std::vector<FXButton*> myVehicleButtons;374FXCheckButton* myVehicleColorInterpolation = nullptr;375376/// @brief vehicle scaler377MFXComboBoxIcon* myVehicleScaleMode = nullptr;378FXVerticalFrame* myVehicleScaleSettingFrame = nullptr;379std::vector<FXRealSpinner*> myVehicleScales;380std::vector<FXRealSpinner*> myVehicleScaleThresholds;381std::vector<FXButton*> myVehicleScaleButtons;382FXCheckButton* myVehicleScaleInterpolation = nullptr;383384FXCheckButton* myShowBlinker = nullptr;385FXCheckButton* myShowMinGap = nullptr;386FXCheckButton* myShowBrakeGap = nullptr;387FXCheckButton* myShowBTRange = nullptr;388FXCheckButton* myShowRouteIndex = nullptr;389FXCheckButton* myScaleLength = nullptr;390FXCheckButton* myDrawReversed = nullptr;391FXCheckButton* myShowParkingInfo = nullptr;392FXCheckButton* myShowChargingInfo = nullptr;393/*FXCheckButton* myShowLaneChangePreference = nullptr;*/394395FXComboBox* myVehicleParamKey = nullptr;396FXComboBox* myVehicleScalingParamKey = nullptr;397FXComboBox* myVehicleTextParamKey = nullptr;398399/// @brief Persons400MFXComboBoxIcon* myPersonColorMode, *myPersonShapeDetail = nullptr;401FXVerticalFrame* myPersonColorSettingFrame = nullptr;402std::vector<FXColorWell*> myPersonColors;403std::vector<FXRealSpinner*> myPersonThresholds;404std::vector<FXButton*> myPersonButtons;405FXCheckButton* myPersonColorInterpolation = nullptr;406FXCheckButton* myShowPedestrianNetwork = nullptr;407FXColorWell* myPedestrianNetworkColor = nullptr;408409/// @brief Containers410MFXComboBoxIcon* myContainerColorMode, *myContainerShapeDetail = nullptr;411FXVerticalFrame* myContainerColorSettingFrame = nullptr;412std::vector<FXColorWell*> myContainerColors;413std::vector<FXRealSpinner*> myContainerThresholds;414std::vector<FXButton*> myContainerButtons;415FXCheckButton* myContainerColorInterpolation = nullptr;416FXRealSpinner* myContainerMinSizeDialer, *myContainerUpscaleDialer = nullptr;417418/// @brief junctions419MFXComboBoxIcon* myJunctionColorMode = nullptr;420FXVerticalFrame* myJunctionColorSettingFrame = nullptr;421std::vector<FXColorWell*> myJunctionColors;422std::vector<FXRealSpinner*> myJunctionThresholds;423std::vector<FXButton*> myJunctionButtons;424FXCheckButton* myJunctionColorInterpolation = nullptr;425426/// @brief POIs427MFXComboBoxIcon* myPOIColorMode, *myPOIShapeDetail = nullptr;428FXVerticalFrame* myPOIColorSettingFrame = nullptr;429std::vector<FXColorWell*> myPOIColors;430std::vector<FXRealSpinner*> myPOIThresholds;431std::vector<FXButton*> myPOIButtons;432FXCheckButton* myPOIColorInterpolation = nullptr;433FXComboBox* myPOITextParamKey = nullptr;434FXSpinner* myPoiDetail = nullptr;435FXCheckButton* myPOIUseCustomLayer = nullptr;436FXRealSpinner* myPOICustomLayer = nullptr;437438/// @brief Polygons439MFXComboBoxIcon* myPolyColorMode, *myPolyShapeDetail = nullptr;440FXVerticalFrame* myPolyColorSettingFrame = nullptr;441std::vector<FXColorWell*> myPolyColors;442std::vector<FXRealSpinner*> myPolyThresholds;443std::vector<FXButton*> myPolyButtons;444FXCheckButton* myPolyColorInterpolation = nullptr;445FXCheckButton* myPolyUseCustomLayer = nullptr;446FXRealSpinner* myPolyCustomLayer = nullptr;447448/// @brief Data449MFXComboBoxIcon* myDataColorMode = nullptr;450FXVerticalFrame* myDataColorSettingFrame = nullptr;451std::vector<FXColorWell*> myDataColors;452std::vector<FXRealSpinner*> myDataThresholds;453std::vector<FXButton*> myDataButtons;454FXCheckButton* myDataColorInterpolation = nullptr;455FXComboBox* myDataParamKey = nullptr;456FXRealSpinner* myEdgeRelationUpscaleDialer = nullptr;457FXRealSpinner* myTazRelationUpscaleDialer = nullptr;458459/// @brief buttons460FXCheckButton* myShowLane2Lane = nullptr;461FXCheckButton* myDrawJunctionShape = nullptr;462FXCheckButton* myDrawCrossingsAndWalkingAreas = nullptr;463FXCheckButton* myShowSizeLegend = nullptr;464FXCheckButton* myShowColorLegend = nullptr;465FXCheckButton* myShowVehicleColorLegend = nullptr;466467/// @brief468FXCheckButton* myIgnoreColorSchemeFor3DVehicles = nullptr;469FXCheckButton* myShow3DTLSLinkMarkers = nullptr;470FXCheckButton* myShow3DTLSDomes = nullptr;471FXCheckButton* myShow3DHeadUpDisplay = nullptr;472FXCheckButton* myGenerate3DTLSModels = nullptr;473FXSpinner* myLight3DFactor = nullptr;474//FXColorWell* myAmbient3DLight = nullptr;475//FXColorWell* myDiffuse3DLight = nullptr;476FXColorWell* mySkyColor = nullptr;477478/// @brief openGL479FXCheckButton* myDither = nullptr;480FXCheckButton* myFPS = nullptr;481FXCheckButton* myTrueZ = nullptr;482FXCheckButton* myDrawBoundaries = nullptr;483FXCheckButton* myForceDrawForRectangleSelection = nullptr;484FXCheckButton* myDisableDottedContours = nullptr;485FXButton* myRecalculateBoundaries = nullptr;486FXRealSpinner* myComboRows = nullptr;487488/// @brief name panels489NamePanel* myEdgeNamePanel = nullptr;490NamePanel* myInternalEdgeNamePanel = nullptr;491NamePanel* myCwaEdgeNamePanel = nullptr;492NamePanel* myStreetNamePanel = nullptr;493NamePanel* myEdgeValuePanel = nullptr;494NamePanel* myEdgeScaleValuePanel = nullptr;495NamePanel* myJunctionIndexPanel = nullptr;496NamePanel* myTLIndexPanel = nullptr;497NamePanel* myJunctionIDPanel = nullptr;498NamePanel* myJunctionNamePanel = nullptr;499NamePanel* myInternalJunctionNamePanel = nullptr;500NamePanel* myTLSPhaseIndexPanel = nullptr;501NamePanel* myTLSPhaseNamePanel = nullptr;502NamePanel* myVehicleNamePanel = nullptr;503NamePanel* myVehicleValuePanel = nullptr;504NamePanel* myVehicleScaleValuePanel = nullptr;505NamePanel* myVehicleTextPanel = nullptr;506NamePanel* myPersonNamePanel = nullptr;507NamePanel* myPersonValuePanel = nullptr;508NamePanel* myContainerNamePanel = nullptr;509NamePanel* myAddNamePanel = nullptr;510NamePanel* myAddFullNamePanel = nullptr;511NamePanel* myPOINamePanel = nullptr;512NamePanel* myPOITypePanel = nullptr;513NamePanel* myPOITextPanel = nullptr;514NamePanel* myPolyNamePanel = nullptr;515NamePanel* myPolyTypePanel = nullptr;516NamePanel* myDataValuePanel = nullptr;517NamePanel* myGeometryIndicesPanel = nullptr;518519/// @brief size panels520SizePanel* myVehicleSizePanel = nullptr;521SizePanel* myPersonSizePanel = nullptr;522SizePanel* myContainerSizePanel = nullptr;523SizePanel* myPOISizePanel = nullptr;524SizePanel* myPolySizePanel = nullptr;525SizePanel* myAddSizePanel = nullptr;526SizePanel* myJunctionSizePanel = nullptr;527528/// @brief rainbow panels529RainbowPanel* myEdgeRainbowPanel = nullptr;530RainbowPanel* myJunctionRainbowPanel = nullptr;531RainbowPanel* myDataRainbowPanel = nullptr;532RainbowPanel* myVehicleRainbowPanel = nullptr;533534/// @brief load/save-menu535FXCheckButton* mySaveViewPort = nullptr;536FXCheckButton* mySaveDelay = nullptr;537FXCheckButton* mySaveDecals = nullptr;538FXCheckButton* mySaveBreakpoints = nullptr;539540/// @}541542/// @brief Frame3D543FXTabItem* myFrame3D = nullptr;544545/// @brief update color ranges546bool updateColorRanges(FXObject* sender, std::vector<FXColorWell*>::const_iterator colIt,547std::vector<FXColorWell*>::const_iterator colEnd,548std::vector<FXRealSpinner*>::const_iterator threshIt,549std::vector<FXRealSpinner*>::const_iterator threshEnd,550std::vector<FXButton*>::const_iterator buttonIt,551GUIColorScheme& scheme);552553/// @brief update scale ranges554bool updateScaleRanges(FXObject* sender, std::vector<FXRealSpinner*>::const_iterator colIt,555std::vector<FXRealSpinner*>::const_iterator colEnd,556std::vector<FXRealSpinner*>::const_iterator threshIt,557std::vector<FXRealSpinner*>::const_iterator threshEnd,558std::vector<FXButton*>::const_iterator buttonIt,559GUIScaleScheme& scheme);560561/// @brief Rebuilds manipulators for the current coloring scheme562FXMatrix* rebuildColorMatrix(FXVerticalFrame* frame,563std::vector<FXColorWell*>& colors,564std::vector<FXRealSpinner*>& thresholds,565std::vector<FXButton*>& buttons,566FXCheckButton* interpolation,567GUIColorScheme& scheme);568569/// @brief Rebuilds manipulators for the current scaling scheme570FXMatrix* rebuildScaleMatrix(FXVerticalFrame* frame,571std::vector<FXRealSpinner*>& scales,572std::vector<FXRealSpinner*>& thresholds,573std::vector<FXButton*>& buttons,574FXCheckButton* interpolation,575GUIScaleScheme& scheme);576577/** @brief Rebuilds color changing dialogs after choosing another coloring scheme578* @param[in] doCreate Whether "create" shall be called (only if built the first time)579*/580void rebuildColorMatrices(bool doCreate = false);581582/** @brief Loads a scheme from a file583* @param[in] file The name of the file to read the settings from584*/585void loadSettings(const std::string& file);586587/** @brief Writes the currently used decals into a file588* @param[in] file The name of the file to write the decals into589*/590void saveDecals(OutputDevice& dev) const;591592/** @brief Loads decals from a file593* @param[in] file The name of the file to read the decals from594*/595void loadDecals(const std::string& file);596597/// @brief reload known vehicle parameters598void updateVehicleParams();599600/// @brief reload known POI parameters601void updatePOIParams();602603/// @brief build header604void buildHeader(FXVerticalFrame* contentFrame);605606/// @brief build frames607/// @{608609void buildBackgroundFrame(FXTabBook* tabbook);610void buildStreetsFrame(FXTabBook* tabbook);611void buildVehiclesFrame(FXTabBook* tabbook);612void buildPersonsFrame(FXTabBook* tabbook);613void buildContainersFrame(FXTabBook* tabbook);614void buildJunctionsFrame(FXTabBook* tabbook);615void buildAdditionalsFrame(FXTabBook* tabbook);616void buildDemandFrame(FXTabBook* tabbook);617void buildPOIsFrame(FXTabBook* tabbook);618void buildPolygonsFrame(FXTabBook* tabbook);619void buildSelectionFrame(FXTabBook* tabbook);620void buildDataFrame(FXTabBook* tabbook);621void buildLegendFrame(FXTabBook* tabbook);622void buildOpenGLFrame(FXTabBook* tabbook);623void build3DFrame(FXTabBook* tabbook);624625///@}626627/// @brief build buttons628void buildButtons(FXVerticalFrame* contentFrame);629630private:631/// @brief invalidated copy constructor632GUIDialog_ViewSettings(const GUIDialog_ViewSettings& s) = delete;633634/// @brief invalidated assignment operator635GUIDialog_ViewSettings& operator=(const GUIDialog_ViewSettings& s) = delete;636};637638639