umbrello 26.07.70-c53146a Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

listpopupmenu.h
Go to the documentation of this file.
1/*
2 SPDX-License-Identifier: GPL-2.0-or-later
3 SPDX-FileCopyrightText: 2003-2022 Umbrello UML Modeller Authors <umbrello-devel@kde.org>
4*/
5
6#ifndef LISTPOPUPMENU_H
7#define LISTPOPUPMENU_H
8
9#include "basictypes.h"
10#include "umllistviewitem.h"
11#include "umlobject.h"
12#include "widgetbase.h"
13#include <QMenu>
14
15#include <QHash>
16
17 class UMLCategory;
18 class ListPopupMenuPrivate;
19
32 class ListPopupMenu : public QMenu
33{
34 Q_OBJECT
35 Q_ENUMS(MenuType)
36 Q_ENUMS(DataType)
37 public:
38 enum MenuType
39 {
40 mt_Model,
41 // diagrams
42 mt_Activity_Diagram,
43 mt_Class_Diagram,
44 mt_Collaboration_Diagram,
45 mt_Component_Diagram,
46 mt_Deployment_Diagram,
47 mt_EntityRelationship_Diagram,
48 mt_Sequence_Diagram,
49 mt_State_Diagram,
50 mt_UseCase_Diagram,
51 mt_Logical_Folder,
52 mt_UseCase_Folder,
53 mt_Component_Folder,
54 mt_Deployment_Folder,
55 mt_EntityRelationship_Folder,
56 // widgets, uml objects
57 mt_Accept_Signal,
58 mt_Accept_Time_Event,
59 mt_Activity,
60 mt_Activity_Transition,
61 mt_Actor,
62 mt_Artifact,
63 mt_Attribute,
64 mt_Branch,
65 mt_Category,
66 mt_CheckConstraint,
67 mt_Choice,
68 mt_Class,
69 mt_CombinedState,
70 mt_Component,
71 mt_Datatype,
72 mt_DeepHistory,
73 mt_DisjointSpecialisation,
74 mt_EditCombinedState,
75 mt_End_Activity,
76 mt_End_State,
77 mt_Entity,
78 mt_EntityAttribute,
79 mt_Enum,
80 mt_EnumLiteral,
81 mt_Exception,
82 mt_FloatText,
83 mt_Final_Activity,
84 mt_ForeignKeyConstraint,
85 mt_Fork,
86 mt_GoToStateDiagram,
87 mt_Initial_Activity,
88 mt_Initial_State,
89 mt_Invoke_Activity,
90 mt_Instance,
91 mt_InstanceAttribute,
92 mt_Interface,
93 mt_InterfaceComponent,
94 mt_InterfaceProvided,
95 mt_InterfaceRequired,
96 mt_Junction,
97 mt_MessageAsynchronous,
98 mt_MessageCreation,
99 mt_MessageDestroy,
100 mt_MessageFound,
101 mt_MessageLost,
102 mt_MessageSynchronous,
103 mt_Node,
104 mt_Note,
105 mt_Object,
106 mt_Object_Node,
107 mt_Operation,
108 mt_OverlappingSpecialisation,
109 mt_Package,
110 mt_Param_Activity,
111 mt_Pin,
112 mt_Port,
113 mt_PrePostCondition,
114 mt_PrimaryKeyConstraint,
115 mt_Region,
116 mt_SelectStateDiagram,
117 mt_Send_Signal,
118 mt_ShallowHistory,
119 mt_State,
120 mt_StateFork,
121 mt_StateJoin,
122 mt_StateTransition,
123 mt_Subsystem,
124 mt_Template,
125 mt_Union,
126 mt_UniqueConstraint,
127 mt_UseCase,
128 // new from dialogs
129 mt_New_Activity,
130 mt_New_Attribute,
131 mt_New_EntityAttribute,
132 mt_New_EnumLiteral,
133 mt_New_InstanceAttribute,
134 mt_New_Operation,
135 mt_New_Parameter,
136 mt_New_Template,
137 mt_RemoveStateDiagram,
138 mt_ReturnToClass,
139 mt_ReturnToCombinedState,
140 // selection
141 // visual properties
142 mt_Hide_Attribute_Signature_Selection,
143 mt_Hide_Attributes_Selection, // Unset visual property on multiple widgets
144 mt_Hide_Destruction_Box,
145 mt_Hide_NonPublic_Selection, // Could be named "show public only"
146 mt_Hide_Operation_Signature_Selection,
147 mt_Hide_Operations_Selection, // Hide operations
148 mt_Hide_Packages_Selection,
149 mt_Hide_Stereotypes_Selection,
150 mt_Hide_Visibility_Selection,
151 mt_Show_Attribute_Signature,
152 mt_Show_Attribute_Signature_Selection,
153 mt_Show_Attributes_Selection, // Set visual property on multiple widgets
154 mt_Show_Attributes, // Toggle visual property on a widget
155 mt_Show_Destruction_Box,
156 mt_Show_Documentation,
157 mt_Show_NonPublic_Selection, // Could be named "hide public only" (crazy!)
158 mt_Show_Operation_Signature,
159 mt_Show_Operation_Signature_Selection,
160 mt_Show_Operations_Selection, // Show operations
161 mt_Show_Operations, // Toggle 'show operations'
162 mt_Show_Packages, // etc...
163 mt_Show_Packages_Selection,
164 mt_Show_Public_Only,
165 mt_Show_Stereotypes,
166 mt_Show_Stereotypes_Selection,
167 mt_Show_Visibility_Selection,
168 mt_Visibility,
169 // other
170 mt_DrawAsCircle,
171 mt_ChangeToClass,
172 mt_ChangeToInterface,
173 mt_ChangeToPackage,
174 mt_Open_File,
175 mt_Rename_Object,
176 mt_Select_Operation,
177 mt_Properties,
178 mt_Rename,
179 mt_NameAsTooltip,
180 mt_Show,
181 mt_Delete,
182 mt_Export_Image,
183 mt_Import_Class,
184 mt_Import_Project,
185 mt_Cut,
186 mt_Copy,
187 mt_Paste,
188 mt_Clear,
189 mt_Redo,
190 mt_Undo,
191 mt_Reset_Label_Positions,
192 mt_Line_Color,
193 mt_Line_Color_Selection,
194 mt_Fill_Color,
195 mt_Fill_Color_Selection,
196 mt_Use_Fill_Color,
197 mt_Set_Use_Fill_Color_Selection,
198 mt_Unset_Use_Fill_Color_Selection,
199 mt_Rename_MultiA,
200 mt_Rename_MultiB,
201 mt_Rename_Name,
202 mt_Rename_RoleAName,
203 mt_Rename_RoleBName,
204 mt_Change_Font,
205 mt_Change_Font_Selection,
206 mt_SnapToGrid,
207 mt_SnapComponentSizeToGrid,
208 mt_ShowDocumentationIndicator,
209 mt_ShowSnapGrid,
210 mt_AutoResize,
211 mt_Resize,
212 mt_Up,
213 mt_Down,
214 mt_FlipHorizontal,
215 mt_FlipVertical,
216 mt_Add_Point,
217 mt_Delete_Point,
218 mt_Auto_Layout_Spline,
219
220 mt_Expand_All, // Expand all items in the list
221 mt_Collapse_All, // Collapse all items in the list
222
223 mt_Refactoring,
224 mt_ViewCode, // view code document contents
225 mt_Clone, // Create a deep copy of the object.
226 mt_Externalize_Folder, // Mark folder for saving as separate submodel
227 mt_Internalize_Folder, // Reintegrate separate submodel into main model
228
229 mt_AddInteractionOperand, // add a dash line to an alternative or a parallel combined fragment
230 mt_Apply_Layout, // apply automatically created layout
231 mt_Apply_Layout1, // apply automatically created layout
232 mt_Apply_Layout2, // apply automatically created layout
233 mt_Apply_Layout3, // apply automatically created layout
234 mt_Apply_Layout4, // apply automatically created layout
235 mt_Apply_Layout5, // apply automatically created layout
236 mt_Apply_Layout6, // apply automatically created layout
237 mt_Apply_Layout7, // apply automatically created layout
238 mt_Apply_Layout8, // apply automatically created layout
239 mt_Apply_Layout9, // apply automatically created layout
240
241 mt_LayoutDirect, // associations with direct lines
242 mt_LayoutSpline, // associations with slines
243 mt_LayoutOrthogonal, // associations with orthogonal lines
244 mt_LayoutPolyline, // associations with polylines
245
246 mt_Align_Right,
247 mt_Align_Left,
248 mt_Align_Top,
249 mt_Align_Bottom,
250 mt_Align_VerticalMiddle,
251 mt_Align_HorizontalMiddle,
252 mt_Align_VerticalDistribute,
253 mt_Align_HorizontalDistribute,
254 mt_Import_from_File,
255 mt_Remove,
256 // add new entries above
257 mt_Undefined = - 1
258 };
259
260 static QString toString(MenuType menu);
261
262 enum DataType
263 {
264 dt_MenuPointer,
265 dt_ApplyLayout
266 };
267
268 static QString toString(DataType data);
269 static QVariant dataFromAction(DataType key, QAction* action);
270
271 ListPopupMenu(QWidget *parent = nullptr);
272
273 virtual ~ListPopupMenu();
274
275 static UMLObject::ObjectType convert_MT_OT(MenuType mt);
276
277 static ListPopupMenu* menuFromAction(QAction *action);
278 static MenuType typeFromAction(QAction *action);
279
280 QAction* getAction(MenuType idx);
281
282 void setActionEnabled(MenuType idx, bool value);
283
284 MenuType getMenuType(QAction* action);
285
286 void dumpActions(const QString &title);
287
288 QMenu *newMenu(const QString &title, QWidget *widget);
289 void addMenu(QMenu *menu);
290 protected:
291 void insert(MenuType m);
292 void insertFromActionKey(const MenuType m, QMenu *menu, const QString &action);
293 void insert(const MenuType m, QMenu* menu);
294 void insert(const MenuType m, QMenu* menu, const QIcon & icon, const QString & text);
295 void insert(const MenuType m, QMenu* menu, const QString & text, const bool checkable = false);
296 void insert(const MenuType m, const QIcon & icon, const QString & text);
297 void insert(const MenuType m, const QString & text, const bool checkable = false);
298
299 void insertContainerItems(bool folders, bool diagrams, bool packages);
300 void insertContainerItems(QMenu* menu, bool folders, bool diagrams, bool packages);
301 void insertAssociationTextItem(const QString &label, MenuType mt);
302
303 QMenu *makeNewMenu();
304 void insertSubMenuCategoryType(UMLCategory *category);
305
306 void setActionChecked(MenuType idx, bool value);
307 void setupActionsData();
308
309 QHash<MenuType, QAction*> m_actions;
310 ListPopupMenuPrivate *d;
311};
312
314 Q_DECLARE_METATYPE(ListPopupMenu*)
315
316#endif
basictypes.h
UMLCategory
Information for a non-graphical UML Category.
Definition: umlcategory.h:22
UMLObject::ObjectType
ObjectType
Definition: umlobject.h:76
umllistviewitem.h
umlobject.h
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(UMLObject *)
widgetbase.h