1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
3 // File: PartSet_MenuMgr.h
4 // Created: 03 April 2015
5 // Author: Vitaly SMETANNIKOV
7 #ifndef PartSet_MenuMgr_H
8 #define PartSet_MenuMgr_H
10 #include <ModelAPI_Feature.h>
18 class ModuleBase_Operation;
25 * A class for management of module specific menu
27 class PartSet_MenuMgr: public QObject
32 /// \param theModule a parent module
33 PartSet_MenuMgr(PartSet_Module* theModule);
36 /// Returns action according to the given ID
37 /// \param theId an action identifier, it should be uniqued in the bounds of the module
38 QAction* action(const QString& theId) const;
40 /// Add menu atems for viewer into the given menu
41 /// \param theMenu a popup menu to be shown in the viewer
42 /// \param theStdActions a map of standard actions
43 /// \return true if items are added and there is no necessity to provide standard menu
44 bool addViewerMenu(QMenu* theMenu, const QMap<QString, QAction*>& theStdActions) const;
46 /// Update state of pop-up menu items in viewer
47 /// \param theStdActions - a map of standard actions
48 void updateViewerMenu(const QMap<QString, QAction*>& theStdActions);
50 /// Activates a PartSet document
51 void activatePartSet() const;
53 /// Returns list of granted operation indices
54 virtual void grantedOperationIds(ModuleBase_Operation* theOperation, QStringList& theIds) const;
57 /// Processes the context menu action click
58 /// \param isChecked a state of toggle if the action is checkable
59 void onAction(bool isChecked);
63 /// A slot which is called on selection of menu item coresponding to line with coincedence
64 /// \param theAction an action of the selected item
65 void onLineHighlighted(QAction* theAction);
67 /// A slot which is called on hiding Detach menu
68 void onDetachMenuHide();
70 /// A slot which is called on selection an Item in Detach menu
71 /// \param theAction an action of the selected item
72 void onLineDetach(QAction* theAction);
74 /// A slot called on Part activation command
75 void onActivatePart(bool);
77 /// A slot called on PartSet activation command
78 void onActivatePartSet(bool);
80 /// A slot called on edit of feature
83 void onSelectParentFeature();
86 /// Returns true if the current operation is sketch entity create operation
87 /// \param theValue the current auxiliary value
88 /// \return the boolean result
89 bool canSetAuxiliary(bool& theValue) const;
91 /// Changes the sketcher entity construction argument value
92 /// \param isChecked if true, the feature is a construction
93 void setAuxiliary(const bool isChecked);
95 /// Create all actions for context menus. It is called on creation of module
96 /// Put the created actions into an internal map
99 /// Add action to the internal map
100 /// \param theId - string ID of the item
101 /// \param theAction - action to add
102 void addAction(const QString& theId, QAction* theAction);
104 /// Set color on presentation of result listed in myCoinsideLines
105 /// \param theId object Id in myCoinsideLines list
106 /// \param theColor a color which has to be set
107 /// \param theUpdate update viewer flag
108 /// \return previously defined color on the object
109 QColor setLineColor(int theId, const QColor theColor, bool theUpdate);
111 /// Reference to a parent module
112 PartSet_Module* myModule;
114 /// the popup menu actions
115 QMap<QString, QAction*> myActions;
117 /// List of lines coincided in a one point
118 mutable QList<FeaturePtr> myCoinsideLines;
120 /// A Coincedence feature selected by user for detaching
121 mutable FeaturePtr mySelectedFeature;
123 /// Id of menu item in Detach menu previously selected
126 /// Original color of highlighted line