Line data Source code
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 : /****************************************************************************/ 14 : /// @file GUIGlChildWindow.h 15 : /// @author Daniel Krajzewicz 16 : /// @author Jakob Erdmann 17 : /// @author Michael Behrisch 18 : /// @date Fri, 29.04.2005 19 : /// 20 : // 21 : /****************************************************************************/ 22 : #pragma once 23 : #include <config.h> 24 : 25 : #include "GUISUMOAbstractView.h" 26 : 27 : 28 : // =========================================================================== 29 : // class declaration 30 : // =========================================================================== 31 : 32 : class MFXCheckableButton; 33 : class MFXMenuButtonTooltip; 34 : 35 : // =========================================================================== 36 : // class definitions 37 : // =========================================================================== 38 : 39 : class GUIGlChildWindow : public FXMDIChild { 40 0 : FXDECLARE(GUIGlChildWindow) 41 : 42 : public: 43 : /// @brief constructor 44 : GUIGlChildWindow(FXMDIClient* p, GUIMainWindow* GUIMainWindowParent, 45 : FXMDIMenu* mdimenu, const FXString& name, FXMenuBar* gripNavigationToolbar, 46 : FXIcon* ic = NULL, FXuint opts = 0, FXint x = 0, FXint y = 0, FXint w = 0, FXint h = 0); 47 : 48 : /// @brief destructor 49 : virtual ~GUIGlChildWindow(); 50 : 51 : /// @brief get build GL Canvas 52 : virtual FXGLCanvas* getBuildGLCanvas() const; 53 : 54 : /// @brief create GUIGlChildWindow 55 : virtual void create(); 56 : 57 : /// @brief return GUISUMOAbstractView 58 : GUISUMOAbstractView* getView() const; 59 : 60 : /// @brief Returns the GUIMainWindow parent 61 : GUIMainWindow* getGUIMainWindowParent(); 62 : 63 : /// @name buttons call backs 64 : /// @{ 65 : long onCmdRecenterView(FXObject*, FXSelector, void*); 66 : long onCmdEditViewport(FXObject*, FXSelector, void*); 67 : long onCmdEditViewScheme(FXObject*, FXSelector, void*); 68 : long onCmdShowToolTipsView(FXObject* sender, FXSelector, void*); 69 : long onCmdShowToolTipsMenu(FXObject* sender, FXSelector, void*); 70 : long onCmdZoomStyle(FXObject* sender, FXSelector, void*); 71 : long onCmdChangeColorScheme(FXObject*, FXSelector sel, void*); 72 : /// @} 73 : 74 : /// @brief return a reference to navigation toolbar 75 : FXToolBar* getNavigationToolBar(GUISUMOAbstractView& v); 76 : 77 0 : virtual std::vector<GUIGlID> getObjectIDs(int messageId) const { 78 : // FOX does not allow abstract virtual function here 79 : UNUSED_PARAMETER(messageId); 80 0 : return std::vector<GUIGlID>(); 81 : } 82 : 83 : /// @ brief return a pointer to locator popup 84 : FXPopup* getLocatorPopup(); 85 : 86 : /// @brief return combobox with the current coloring schemes (standard, fastest standard, real world...) 87 : MFXComboBoxIcon* getColoringSchemesCombo(); 88 : 89 : /// @brief get menu for tooltips menu 90 : MFXCheckableButton* getShowToolTipsMenu() const; 91 : 92 : /** @brief Centers the view onto the given artifact 93 : * @param[in] id The id of the object to center the view on 94 : */ 95 : void setView(GUIGlID id); 96 : 97 : /// @brief true if the object is selected (may include extra logic besides calling gSelected) 98 : virtual bool isSelected(GUIGlObject* o) const; 99 : 100 : protected: 101 : /// @brief FOX needs this 102 0 : FOX_CONSTRUCTOR(GUIGlChildWindow) 103 : 104 : /// @brief The parent window 105 : GUIMainWindow* myGUIMainWindowParent = nullptr; 106 : 107 : /// @brief The grip navigation tool bar 108 : FXMenuBar* myGripNavigationToolbar = nullptr; 109 : 110 : /// @brief The static navigation tool bar 111 : FXToolBar* myStaticNavigationToolBar = nullptr; 112 : 113 : /// @brief The view 114 : GUISUMOAbstractView* myView = nullptr; 115 : 116 : /// @brief Zoom but 117 : MFXCheckableButton* myZoomStyle = nullptr; 118 : 119 : /// The locator menu 120 : FXPopup* myLocatorPopup = nullptr; 121 : 122 : /// @brief The locator button 123 : MFXMenuButtonTooltip* myLocatorButton = nullptr; 124 : 125 : /// @brief menu for tooltips view 126 : MFXCheckableButton* myShowToolTipsView = nullptr; 127 : 128 : /// @brief menu for tooltips menu 129 : MFXCheckableButton* myShowToolTipsMenu = nullptr; 130 : 131 : /// @brief The contents frame 132 : FXVerticalFrame* myChildWindowContentFrame = nullptr; 133 : 134 : /// @brief The coloring schemes 135 : MFXComboBoxIcon* myColoringSchemes = nullptr; 136 : 137 : /// @brief build navigation toolbar 138 : void buildNavigationToolBar(); 139 : 140 : /// @brief build coloring toolbar 141 : void buildColoringToolBar(); 142 : 143 : /// @brief build screenshot toolbar 144 : void buildScreenshotToolBar(); 145 : 146 : private: 147 : /// @brief Invalidated copy constructor. 148 : GUIGlChildWindow(const GUIGlChildWindow&) = delete; 149 : 150 : /// @brief Invalidated assignment operator. 151 : GUIGlChildWindow& operator=(const GUIGlChildWindow&) = delete; 152 : };