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