umbrello  2.39.2
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 
17 class UMLCategory;
19 
32 class ListPopupMenu : public QMenu
33 {
34  Q_OBJECT
35  Q_ENUMS(MenuType)
36  Q_ENUMS(DataType)
37 public:
38  enum MenuType
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"
147  mt_Hide_Operations_Selection, // Hide operations
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!)
160  mt_Show_Operations_Selection, // Show operations
161  mt_Show_Operations, // Toggle 'show operations'
162  mt_Show_Packages, // etc...
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 
262  enum DataType
263  {
266  };
267 
268  static QString toString(DataType data);
269  static QVariant dataFromAction(DataType key, QAction* action);
270 
271  ListPopupMenu(QWidget* parent = 0);
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);
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;
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:608
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:485
ListPopupMenu(QWidget *parent=0)
Definition: listpopupmenu.cpp:76
static QVariant dataFromAction(DataType key, QAction *action)
Definition: listpopupmenu.cpp:474
void dumpActions(const QString &title)
Definition: listpopupmenu.cpp:630
QMenu * newMenu(const QString &title, QWidget *widget)
Definition: listpopupmenu.cpp:94
void setupActionsData()
Definition: listpopupmenu.cpp:595
static UMLObject::ObjectType convert_MT_OT(MenuType mt)
Definition: listpopupmenu.cpp:421
QHash< MenuType, QAction * > m_actions
Definition: listpopupmenu.h:309
void setActionEnabled(MenuType idx, bool value)
Definition: listpopupmenu.cpp:576
QAction * getAction(MenuType idx)
Definition: listpopupmenu.cpp:526
MenuType getMenuType(QAction *action)
Definition: listpopupmenu.cpp:542
ListPopupMenuPrivate * d
Definition: listpopupmenu.h:310
void insertContainerItems(bool folders, bool diagrams, bool packages)
Definition: listpopupmenu.cpp:349
void insertAssociationTextItem(const QString &label, MenuType mt)
Definition: listpopupmenu.cpp:393
void insert(MenuType m)
Definition: listpopupmenu.cpp:112
void insertSubMenuCategoryType(UMLCategory *category)
Definition: listpopupmenu.cpp:511
static MenuType typeFromAction(QAction *action)
Definition: listpopupmenu.cpp:406
void addMenu(QMenu *menu)
Definition: listpopupmenu.cpp:101
QMenu * makeNewMenu()
Definition: listpopupmenu.cpp:500
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:124
void setActionChecked(MenuType idx, bool value)
Definition: listpopupmenu.cpp:559
Information for a non-graphical UML Category.
Definition: category.h:22
ObjectType
Definition: umlobject.h:76
Q_DECLARE_METATYPE(UMLStereotype *)