umbrello 25.04.1
Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology
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
17class UMLCategory;
19
32class ListPopupMenu : public QMenu
33{
34 Q_OBJECT
35 Q_ENUMS(MenuType)
36 Q_ENUMS(DataType)
37public:
39 {
41 // diagrams
56 // widgets, uml objects
128 // new from dialogs
140 // selection
141 // visual properties
143 mt_Hide_Attributes_Selection, // Unset visual property on multiple widgets
145 mt_Hide_NonPublic_Selection, // Could be named "show public only"
153 mt_Show_Attributes_Selection, // Set visual property on multiple widgets
154 mt_Show_Attributes, // Toggle visual property on a widget
157 mt_Show_NonPublic_Selection, // Could be named "hide public only" (crazy!)
161 mt_Show_Operations, // Toggle 'show operations'
169 // other
219
220 mt_Expand_All, // Expand all items in the list
221 mt_Collapse_All, // Collapse all items in the list
222
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
256 // add new entries above
257 mt_Undefined = - 1
258 };
259
260 static QString toString(MenuType menu);
261
263 {
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
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);
290protected:
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();
305
306 void setActionChecked(MenuType idx, bool value);
307 void setupActionsData();
308
309 QHash<MenuType, QAction*> m_actions;
311};
312
315
316#endif
Definition listpopupmenu.cpp:58
Displays a popup menu.
Definition listpopupmenu.h:33
static QString toString(MenuType menu)
Definition listpopupmenu.cpp:606
DataType
< Key value of the data map used in actions.
Definition listpopupmenu.h:263
@ dt_MenuPointer
Definition listpopupmenu.h:264
@ dt_ApplyLayout
Definition listpopupmenu.h:265
static ListPopupMenu * menuFromAction(QAction *action)
Definition listpopupmenu.cpp:483
static QVariant dataFromAction(DataType key, QAction *action)
Definition listpopupmenu.cpp:472
void dumpActions(const QString &title)
Definition listpopupmenu.cpp:628
QMenu * newMenu(const QString &title, QWidget *widget)
Definition listpopupmenu.cpp:92
void setupActionsData()
Definition listpopupmenu.cpp:593
static UMLObject::ObjectType convert_MT_OT(MenuType mt)
Definition listpopupmenu.cpp:419
QHash< MenuType, QAction * > m_actions
Definition listpopupmenu.h:309
void setActionEnabled(MenuType idx, bool value)
Definition listpopupmenu.cpp:574
QAction * getAction(MenuType idx)
Definition listpopupmenu.cpp:524
MenuType getMenuType(QAction *action)
Definition listpopupmenu.cpp:540
ListPopupMenuPrivate * d
Definition listpopupmenu.h:310
void insertContainerItems(bool folders, bool diagrams, bool packages)
Definition listpopupmenu.cpp:347
void insertAssociationTextItem(const QString &label, MenuType mt)
Definition listpopupmenu.cpp:391
void insert(MenuType m)
Definition listpopupmenu.cpp:110
void insertSubMenuCategoryType(UMLCategory *category)
Definition listpopupmenu.cpp:509
static MenuType typeFromAction(QAction *action)
Definition listpopupmenu.cpp:404
void addMenu(QMenu *menu)
Definition listpopupmenu.cpp:99
QMenu * makeNewMenu()
Definition listpopupmenu.cpp:498
virtual ~ListPopupMenu()
Definition listpopupmenu.cpp:85
MenuType
< This type hosts all possible menu entry types
Definition listpopupmenu.h:39
@ mt_Branch
Definition listpopupmenu.h:64
@ mt_GoToStateDiagram
Definition listpopupmenu.h:86
@ mt_Entity
Definition listpopupmenu.h:77
@ mt_SnapToGrid
Definition listpopupmenu.h:206
@ mt_Fill_Color_Selection
Definition listpopupmenu.h:195
@ mt_AddInteractionOperand
Definition listpopupmenu.h:229
@ mt_FlipHorizontal
Definition listpopupmenu.h:214
@ mt_Refactoring
Definition listpopupmenu.h:223
@ mt_MessageFound
Definition listpopupmenu.h:100
@ mt_State_Diagram
Definition listpopupmenu.h:49
@ mt_Reset_Label_Positions
Definition listpopupmenu.h:191
@ mt_Junction
Definition listpopupmenu.h:96
@ mt_Show_Packages
Definition listpopupmenu.h:162
@ mt_PrimaryKeyConstraint
Definition listpopupmenu.h:114
@ mt_Operation
Definition listpopupmenu.h:107
@ mt_Show_Packages_Selection
Definition listpopupmenu.h:163
@ mt_Align_HorizontalMiddle
Definition listpopupmenu.h:251
@ mt_StateTransition
Definition listpopupmenu.h:122
@ mt_New_EnumLiteral
Definition listpopupmenu.h:132
@ mt_Deployment_Diagram
Definition listpopupmenu.h:46
@ mt_Rename
Definition listpopupmenu.h:178
@ mt_Class_Diagram
Definition listpopupmenu.h:43
@ mt_Collaboration_Diagram
Definition listpopupmenu.h:44
@ mt_Logical_Folder
Definition listpopupmenu.h:51
@ mt_Hide_Operations_Selection
Definition listpopupmenu.h:147
@ mt_StateJoin
Definition listpopupmenu.h:121
@ mt_Align_Top
Definition listpopupmenu.h:248
@ mt_Align_Bottom
Definition listpopupmenu.h:249
@ mt_Show_Destruction_Box
Definition listpopupmenu.h:155
@ mt_Show_Visibility_Selection
Definition listpopupmenu.h:167
@ mt_Show_Attributes
Definition listpopupmenu.h:154
@ mt_Change_Font
Definition listpopupmenu.h:204
@ mt_Apply_Layout3
Definition listpopupmenu.h:233
@ mt_FlipVertical
Definition listpopupmenu.h:215
@ mt_Cut
Definition listpopupmenu.h:185
@ mt_UseCase_Folder
Definition listpopupmenu.h:52
@ mt_DrawAsCircle
Definition listpopupmenu.h:170
@ mt_Component_Diagram
Definition listpopupmenu.h:45
@ mt_New_InstanceAttribute
Definition listpopupmenu.h:133
@ mt_Apply_Layout8
Definition listpopupmenu.h:238
@ mt_Set_Use_Fill_Color_Selection
Definition listpopupmenu.h:197
@ mt_Sequence_Diagram
Definition listpopupmenu.h:48
@ mt_New_Operation
Definition listpopupmenu.h:134
@ mt_Align_HorizontalDistribute
Definition listpopupmenu.h:253
@ mt_Union
Definition listpopupmenu.h:125
@ mt_ForeignKeyConstraint
Definition listpopupmenu.h:84
@ mt_Rename_Object
Definition listpopupmenu.h:175
@ mt_Visibility
Definition listpopupmenu.h:168
@ mt_DisjointSpecialisation
Definition listpopupmenu.h:73
@ mt_Note
Definition listpopupmenu.h:104
@ mt_ReturnToClass
Definition listpopupmenu.h:138
@ mt_CheckConstraint
Definition listpopupmenu.h:66
@ mt_Collapse_All
Definition listpopupmenu.h:221
@ mt_Accept_Time_Event
Definition listpopupmenu.h:58
@ mt_Param_Activity
Definition listpopupmenu.h:110
@ mt_Add_Point
Definition listpopupmenu.h:216
@ mt_Hide_Visibility_Selection
Definition listpopupmenu.h:150
@ mt_ViewCode
Definition listpopupmenu.h:224
@ mt_Export_Image
Definition listpopupmenu.h:182
@ mt_Externalize_Folder
Definition listpopupmenu.h:226
@ mt_Activity_Transition
Definition listpopupmenu.h:60
@ mt_StateFork
Definition listpopupmenu.h:120
@ mt_MessageLost
Definition listpopupmenu.h:101
@ mt_Apply_Layout2
Definition listpopupmenu.h:232
@ mt_OverlappingSpecialisation
Definition listpopupmenu.h:108
@ mt_Enum
Definition listpopupmenu.h:79
@ mt_NameAsTooltip
Definition listpopupmenu.h:179
@ mt_Hide_Destruction_Box
Definition listpopupmenu.h:144
@ mt_Invoke_Activity
Definition listpopupmenu.h:89
@ mt_EditCombinedState
Definition listpopupmenu.h:74
@ mt_EntityAttribute
Definition listpopupmenu.h:78
@ mt_New_Attribute
Definition listpopupmenu.h:130
@ mt_Activity
Definition listpopupmenu.h:59
@ mt_ChangeToInterface
Definition listpopupmenu.h:172
@ mt_Down
Definition listpopupmenu.h:213
@ mt_Resize
Definition listpopupmenu.h:211
@ mt_Show_NonPublic_Selection
Definition listpopupmenu.h:157
@ mt_Align_VerticalMiddle
Definition listpopupmenu.h:250
@ mt_Hide_Attribute_Signature_Selection
Definition listpopupmenu.h:142
@ mt_Properties
Definition listpopupmenu.h:177
@ mt_Delete_Point
Definition listpopupmenu.h:217
@ mt_Auto_Layout_Spline
Definition listpopupmenu.h:218
@ mt_Show_Operation_Signature
Definition listpopupmenu.h:158
@ mt_Region
Definition listpopupmenu.h:115
@ mt_Subsystem
Definition listpopupmenu.h:123
@ mt_Undo
Definition listpopupmenu.h:190
@ mt_Model
Definition listpopupmenu.h:40
@ mt_MessageCreation
Definition listpopupmenu.h:98
@ mt_Rename_MultiA
Definition listpopupmenu.h:199
@ mt_Show
Definition listpopupmenu.h:180
@ mt_LayoutSpline
Definition listpopupmenu.h:242
@ mt_SnapComponentSizeToGrid
Definition listpopupmenu.h:207
@ mt_Change_Font_Selection
Definition listpopupmenu.h:205
@ mt_UseCase_Diagram
Definition listpopupmenu.h:50
@ mt_ChangeToClass
Definition listpopupmenu.h:171
@ mt_Pin
Definition listpopupmenu.h:111
@ mt_EnumLiteral
Definition listpopupmenu.h:80
@ mt_Attribute
Definition listpopupmenu.h:63
@ mt_Activity_Diagram
Definition listpopupmenu.h:42
@ mt_Package
Definition listpopupmenu.h:109
@ mt_End_State
Definition listpopupmenu.h:76
@ mt_Fill_Color
Definition listpopupmenu.h:194
@ mt_ChangeToPackage
Definition listpopupmenu.h:173
@ mt_Apply_Layout1
Definition listpopupmenu.h:231
@ mt_End_Activity
Definition listpopupmenu.h:75
@ mt_FloatText
Definition listpopupmenu.h:82
@ mt_MessageSynchronous
Definition listpopupmenu.h:102
@ mt_Show_Stereotypes
Definition listpopupmenu.h:165
@ mt_RemoveStateDiagram
Definition listpopupmenu.h:137
@ mt_Align_Left
Definition listpopupmenu.h:247
@ mt_Hide_Packages_Selection
Definition listpopupmenu.h:148
@ mt_Show_Stereotypes_Selection
Definition listpopupmenu.h:166
@ mt_Up
Definition listpopupmenu.h:212
@ mt_Apply_Layout
Definition listpopupmenu.h:230
@ mt_Initial_State
Definition listpopupmenu.h:88
@ mt_Delete
Definition listpopupmenu.h:181
@ mt_Class
Definition listpopupmenu.h:68
@ mt_InterfaceRequired
Definition listpopupmenu.h:95
@ mt_LayoutOrthogonal
Definition listpopupmenu.h:243
@ mt_Port
Definition listpopupmenu.h:112
@ mt_Actor
Definition listpopupmenu.h:61
@ mt_Object
Definition listpopupmenu.h:105
@ mt_LayoutDirect
Definition listpopupmenu.h:241
@ mt_Line_Color_Selection
Definition listpopupmenu.h:193
@ mt_Use_Fill_Color
Definition listpopupmenu.h:196
@ mt_Apply_Layout4
Definition listpopupmenu.h:234
@ mt_Show_Documentation
Definition listpopupmenu.h:156
@ mt_Unset_Use_Fill_Color_Selection
Definition listpopupmenu.h:198
@ mt_New_EntityAttribute
Definition listpopupmenu.h:131
@ mt_Align_Right
Definition listpopupmenu.h:246
@ mt_Remove
Definition listpopupmenu.h:255
@ mt_Hide_NonPublic_Selection
Definition listpopupmenu.h:145
@ mt_Clear
Definition listpopupmenu.h:188
@ mt_Hide_Attributes_Selection
Definition listpopupmenu.h:143
@ mt_Show_Attribute_Signature
Definition listpopupmenu.h:151
@ mt_Hide_Stereotypes_Selection
Definition listpopupmenu.h:149
@ mt_Instance
Definition listpopupmenu.h:90
@ mt_Copy
Definition listpopupmenu.h:186
@ mt_Deployment_Folder
Definition listpopupmenu.h:54
@ mt_Template
Definition listpopupmenu.h:124
@ mt_DeepHistory
Definition listpopupmenu.h:72
@ mt_CombinedState
Definition listpopupmenu.h:69
@ mt_Apply_Layout7
Definition listpopupmenu.h:237
@ mt_Datatype
Definition listpopupmenu.h:71
@ mt_Show_Operations_Selection
Definition listpopupmenu.h:160
@ mt_Import_Class
Definition listpopupmenu.h:183
@ mt_Apply_Layout6
Definition listpopupmenu.h:236
@ mt_State
Definition listpopupmenu.h:119
@ mt_Initial_Activity
Definition listpopupmenu.h:87
@ mt_Choice
Definition listpopupmenu.h:67
@ mt_MessageDestroy
Definition listpopupmenu.h:99
@ mt_LayoutPolyline
Definition listpopupmenu.h:244
@ mt_Artifact
Definition listpopupmenu.h:62
@ mt_New_Activity
Definition listpopupmenu.h:129
@ mt_UniqueConstraint
Definition listpopupmenu.h:126
@ mt_Accept_Signal
Definition listpopupmenu.h:57
@ mt_ReturnToCombinedState
Definition listpopupmenu.h:139
@ mt_InstanceAttribute
Definition listpopupmenu.h:91
@ mt_Exception
Definition listpopupmenu.h:81
@ mt_New_Parameter
Definition listpopupmenu.h:135
@ mt_Node
Definition listpopupmenu.h:103
@ mt_ShowDocumentationIndicator
Definition listpopupmenu.h:208
@ mt_Rename_RoleAName
Definition listpopupmenu.h:202
@ mt_Category
Definition listpopupmenu.h:65
@ mt_Undefined
Definition listpopupmenu.h:257
@ mt_Line_Color
Definition listpopupmenu.h:192
@ mt_Show_Operations
Definition listpopupmenu.h:161
@ mt_Apply_Layout9
Definition listpopupmenu.h:239
@ mt_SelectStateDiagram
Definition listpopupmenu.h:116
@ mt_Component_Folder
Definition listpopupmenu.h:53
@ mt_Select_Operation
Definition listpopupmenu.h:176
@ mt_New_Template
Definition listpopupmenu.h:136
@ mt_Hide_Operation_Signature_Selection
Definition listpopupmenu.h:146
@ mt_Show_Operation_Signature_Selection
Definition listpopupmenu.h:159
@ mt_Rename_RoleBName
Definition listpopupmenu.h:203
@ mt_Apply_Layout5
Definition listpopupmenu.h:235
@ mt_Final_Activity
Definition listpopupmenu.h:83
@ mt_InterfaceComponent
Definition listpopupmenu.h:93
@ mt_Show_Attribute_Signature_Selection
Definition listpopupmenu.h:152
@ mt_Clone
Definition listpopupmenu.h:225
@ mt_Component
Definition listpopupmenu.h:70
@ mt_PrePostCondition
Definition listpopupmenu.h:113
@ mt_EntityRelationship_Folder
Definition listpopupmenu.h:55
@ mt_MessageAsynchronous
Definition listpopupmenu.h:97
@ mt_Open_File
Definition listpopupmenu.h:174
@ mt_Send_Signal
Definition listpopupmenu.h:117
@ mt_ShallowHistory
Definition listpopupmenu.h:118
@ mt_Rename_MultiB
Definition listpopupmenu.h:200
@ mt_Import_from_File
Definition listpopupmenu.h:254
@ mt_Fork
Definition listpopupmenu.h:85
@ mt_Rename_Name
Definition listpopupmenu.h:201
@ mt_ShowSnapGrid
Definition listpopupmenu.h:209
@ mt_Show_Attributes_Selection
Definition listpopupmenu.h:153
@ mt_Import_Project
Definition listpopupmenu.h:184
@ mt_Interface
Definition listpopupmenu.h:92
@ mt_Show_Public_Only
Definition listpopupmenu.h:164
@ mt_Internalize_Folder
Definition listpopupmenu.h:227
@ mt_AutoResize
Definition listpopupmenu.h:210
@ mt_InterfaceProvided
Definition listpopupmenu.h:94
@ mt_Expand_All
Definition listpopupmenu.h:220
@ mt_Redo
Definition listpopupmenu.h:189
@ mt_UseCase
Definition listpopupmenu.h:127
@ mt_EntityRelationship_Diagram
Definition listpopupmenu.h:47
@ mt_Align_VerticalDistribute
Definition listpopupmenu.h:252
@ mt_Object_Node
Definition listpopupmenu.h:106
@ mt_Paste
Definition listpopupmenu.h:187
void insertFromActionKey(const MenuType m, QMenu *menu, const QString &action)
Definition listpopupmenu.cpp:122
void setActionChecked(MenuType idx, bool value)
Definition listpopupmenu.cpp:557
Information for a non-graphical UML Category.
Definition category.h:22
ObjectType
Definition umlobject.h:76
Q_DECLARE_METATYPE(UMLStereotype *)