Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/utils/gui/globjects/GUIGLObjectPopupMenu.h
169685 views
1
/****************************************************************************/
2
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.
4
// This program and the accompanying materials are made available under the
5
// terms of the Eclipse Public License 2.0 which is available at
6
// https://www.eclipse.org/legal/epl-2.0/
7
// This Source Code may also be made available under the following Secondary
8
// Licenses when the conditions for such availability set forth in the Eclipse
9
// Public License 2.0 are satisfied: GNU General Public License, version 2
10
// or later which is available at
11
// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13
/****************************************************************************/
14
/// @file GUIGLObjectPopupMenu.h
15
/// @author Daniel Krajzewicz
16
/// @author Jakob Erdmann
17
/// @author Michael Behrisch
18
/// @date Sept 2002
19
///
20
// The popup menu of a globject.
21
/****************************************************************************/
22
#pragma once
23
#include <config.h>
24
25
#include <vector>
26
#include <utils/foxtools/fxheader.h>
27
#include <utils/geom/Position.h>
28
29
30
// ===========================================================================
31
// class declarations
32
// ===========================================================================
33
34
class GUISUMOAbstractView;
35
class GUIGlObject;
36
class GUIMainWindow;
37
38
// ===========================================================================
39
// class definitions
40
// ===========================================================================
41
/**
42
* @class GUIGLObjectPopupMenu
43
* @brief The popup menu of a globject
44
*/
45
class GUIGLObjectPopupMenu : public FXMenuPane {
46
// FOX-declarations
47
FXDECLARE(GUIGLObjectPopupMenu)
48
49
public:
50
51
/// @name cursor dialog type
52
enum class PopupType {
53
ATTRIBUTES,
54
PROPERTIES,
55
SELECT_ELEMENT,
56
DELETE_ELEMENT,
57
FRONT_ELEMENT
58
};
59
60
/** @brief Constructor
61
* @param[in] app The main window for instantiation of other windows
62
* @param[in] parent The parent view for changing it
63
* @param[in] o The object of interest
64
*/
65
GUIGLObjectPopupMenu(GUIMainWindow& app, GUISUMOAbstractView& parent, GUIGlObject* o);
66
67
/** @brief Constructor
68
* @param[in] app The main window for instantiation of other windows
69
* @param[in] parent The parent view for changing it
70
*/
71
GUIGLObjectPopupMenu(GUIMainWindow* app, GUISUMOAbstractView* parent, PopupType popupType);
72
73
/// @brief Destructor
74
virtual ~GUIGLObjectPopupMenu();
75
76
/// @brief Insert a sub-menu pane in this GUIGLObjectPopupMenu
77
void insertMenuPaneChild(FXMenuPane* child);
78
79
// @brief remove popup menu from objects
80
void removePopupFromObject();
81
82
/// @brief return the real owner of this popup
83
GUISUMOAbstractView* getParentView();
84
85
/// @brief The object that belongs to this popup-menu
86
GUIGlObject* getGLObject() const;
87
88
/// @brief popup type;
89
PopupType getPopupType() const;
90
91
/// @name FX Calls
92
/// @{
93
/// @brief Called if the assigned objects shall be centered
94
long onCmdCenter(FXObject*, FXSelector, void*);
95
96
/// @brief Called if the name shall be copied to clipboard
97
long onCmdCopyName(FXObject*, FXSelector, void*);
98
99
/// @brief Called if the typed name shall be copied to clipboard
100
long onCmdCopyTypedName(FXObject*, FXSelector, void*);
101
102
/// @brief Called if the edge name shall be copied to clipboard (for lanes only)
103
long onCmdCopyEdgeName(FXObject*, FXSelector, void*);
104
105
/// @brief Called if the test coordinates shall be copied to clipboard (only if gui-testing option is enabled)
106
long onCmdCopyTestCoordinates(FXObject*, FXSelector, void*);
107
108
/// @brief Called if the cursor position shall be copied to clipboard
109
long onCmdCopyCursorPosition(FXObject*, FXSelector, void*);
110
111
/// @brief Called if the cursor geo-position shall be copied to clipboard
112
long onCmdCopyCursorGeoPosition(FXObject*, FXSelector, void*);
113
114
/// @brief Called if the current geo-boundary shall be copied to clipboard
115
long onCmdCopyViewGeoBoundary(FXObject*, FXSelector, void*);
116
117
/// @brief Called if the cursor geo-position shall be shown online
118
long onCmdShowCursorGeoPositionOnline(FXObject*, FXSelector, void*);
119
120
/// @brief Called if the parameter of this object shall be shown
121
long onCmdShowPars(FXObject*, FXSelector, void*);
122
123
/// @brief Called if the type parameter of this object shall be shown
124
long onCmdShowTypePars(FXObject*, FXSelector, void*);
125
126
/// @brief Called if the object shall be added to the list of selected objects
127
long onCmdAddSelected(FXObject*, FXSelector, void*);
128
129
/// @brief Called if the object shall be removed from the list of selected objects
130
long onCmdRemoveSelected(FXObject*, FXSelector, void*);
131
132
/// @}
133
134
protected:
135
/// @brief FOX needs this
136
GUIGLObjectPopupMenu();
137
138
/// @brief The parent window
139
GUISUMOAbstractView* myParent;
140
141
/// @brief The object that belongs to this popup-menu
142
GUIGlObject* myObject;
143
144
/// @brief The main application
145
GUIMainWindow* myApplication;
146
147
/// @brief popup type;
148
const PopupType myPopupType;
149
150
/// @brief The position within the network the cursor was above when instanting the popup
151
const Position myNetworkPosition;
152
153
/// @brief The test coordinates position when instanting the popup
154
const std::string myTestCoordinates;
155
156
/// @brief vector mit Sub-MenuPanes
157
std::vector<FXMenuPane*> myMenuPanes;
158
};
159
160