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 : };
|