1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
3 // File: PartSet_WidgetSketchLabel.h
4 // Created: 07 July 2014
5 // Author: Vitaly SMETANNIKOV
7 #ifndef PartSet_WidgetSketchLabel_H
8 #define PartSet_WidgetSketchLabel_H
12 #include <ModuleBase_WidgetValidated.h>
13 #include <ModuleBase_ViewerFilters.h>
15 #include <GeomAPI_Pnt.h>
16 #include <GeomAPI_Dir.h>
17 #include <GeomAPI_AISObject.h>
19 #include <TopoDS_Shape.hxx>
23 class XGUI_OperationMgr;
27 /// the plane edge width
28 #define SKETCH_WIDTH "4"
30 /// face of the square-face displayed for selection of general plane
31 #define PLANE_SIZE "200"
35 * A model widget implementation for a label which provides specific behaviour
36 * for sketcher starting and launching operations
38 class PARTSET_EXPORT PartSet_WidgetSketchLabel : public ModuleBase_WidgetValidated
43 /// \param theParent the parent object
44 /// \param theData the widget configuation. The attribute of the model widget is obtained from
45 /// \param theParentId is Id of a parent of the current attribute
46 PartSet_WidgetSketchLabel(QWidget* theParent, const Config_WidgetAPI* theData,
47 const std::string& theParentId, bool toShowConstraints);
49 virtual ~PartSet_WidgetSketchLabel();
51 /// Set the given wrapped value to the current widget
52 /// This value should be processed in the widget according to the needs
53 /// The method is called by the current operation to process the operation preselection.
54 /// It is redefined to do nothing if the plane of the sketch has been already set.
55 /// \param theValue the wrapped widget value
56 virtual bool setSelection(ModuleBase_ViewerPrs theValue);
58 virtual bool restoreValue()
63 /// Returns list of widget controls
64 /// \return a control list
65 virtual QList<QWidget*> getControls() const;
67 /// The methiod called when widget is deactivated
68 virtual void deactivate();
70 /// Returns pointer to workshop
71 XGUI_Workshop* workshop() const { return myWorkshop; }
73 /// Set pointer to workshop
74 /// \param theWork a pointer to workshop
75 void setWorkshop(XGUI_Workshop* theWork) { myWorkshop = theWork; }
77 /// Returns sketcher plane
78 std::shared_ptr<GeomAPI_Pln> plane() const;
80 /// This control accepts focus
81 virtual bool focusTo();
82 virtual void setHighlighted(bool) { /*do nothing*/ };
83 virtual void enableFocusProcessing();
85 void showConstraints(bool theOn);
88 /// Signal on plane selection
89 void planeSelected(const std::shared_ptr<GeomAPI_Pln>& thePln);
91 void showConstraintToggled(bool);
94 /// Creates a backup of the current values of the attribute
95 /// It should be realized in the specific widget because of different
96 /// parameters of the current attribute
97 virtual void storeAttributeValue();
99 /// Creates a backup of the current values of the attribute
100 /// It should be realized in the specific widget because of different
101 /// parameters of the current attribute
102 /// \param theValid a boolean flag, if restore happens for valid parameters
103 virtual void restoreAttributeValue(const bool theValid);
105 /// Fills the attribute with the value of the selected owner
106 /// \param theOwner a selected owner
107 virtual bool setSelectionCustom(const ModuleBase_ViewerPrs& thePrs);
109 /// Saves the internal parameters to the given feature
110 /// \return True in success
111 virtual bool storeValueCustom() const
116 /// The methiod called when widget is activated
117 virtual void activateCustom();
120 /// Slot on change selection
121 void onSelectionChanged();
123 /// Set sketch specific mode of selection
124 //void setSketchingMode();
127 /// Create preview of planes for sketch plane selection
128 /// \param theOrigin an origin of the plane
129 /// \param theNorm a normal vector of the plane
130 /// \param theRGB a color of plane presentation [r, g, b] array
131 AISObjectPtr createPreviewPlane(std::shared_ptr<GeomAPI_Pnt> theOrigin,
132 std::shared_ptr<GeomAPI_Dir> theNorm,
133 const int theRGB[3]);
135 /// Set sketch plane by shape
136 /// \param theShape a planar face
137 std::shared_ptr<GeomAPI_Dir> setSketchPlane(const TopoDS_Shape& theShape);
139 /// Erase preview planes
140 void erasePreviewPlanes();
142 /// Show preview planes
143 void showPreviewPlanes();
150 XGUI_Workshop* myWorkshop;
152 AISObjectPtr myYZPlane;
153 AISObjectPtr myXZPlane;
154 AISObjectPtr myXYPlane;
155 bool myPreviewDisplayed;
157 //QTimer* mySelectionTimer;
159 QCheckBox* myShowConstraints;