1 // File: ModuleBase_WidgetShapeSelector.h
2 // Created: 2 June 2014
3 // Author: Vitaly Smetannikov
5 #ifndef ModuleBase_WidgetShapeSelector_H
6 #define ModuleBase_WidgetShapeSelector_H
8 #include "ModuleBase.h"
9 #include "ModuleBase_ModelWidget.h"
10 #include "ModuleBase_ViewerFilters.h"
12 #include <ModelAPI_Object.h>
13 #include <GeomAPI_Shape.h>
15 #include <TopAbs_ShapeEnum.hxx>
17 #include <QStringList>
19 class Config_WidgetAPI;
24 class ModuleBase_IWorkshop;
26 class MODULEBASE_EXPORT ModuleBase_WidgetShapeSelector : public ModuleBase_ModelWidget
30 static TopAbs_ShapeEnum shapeType(const QString& theType);
32 ModuleBase_WidgetShapeSelector(QWidget* theParent, ModuleBase_IWorkshop* theWorkshop,
33 const Config_WidgetAPI* theData, const std::string& theParentId);
35 virtual ~ModuleBase_WidgetShapeSelector();
37 /// Saves the internal parameters to the given feature
38 virtual bool storeValue() const;
40 virtual bool restoreValue();
42 /// Returns the internal parent wiget control, that can be shown anywhere
43 /// \returns the widget
44 QWidget* getControl() const
49 /// Returns list of widget controls
50 /// \return a control list
51 virtual QList<QWidget*> getControls() const;
53 ObjectPtr selectedFeature() const
55 return mySelectedObject;
58 /// Set the given wrapped value to the current widget
59 /// This value should be processed in the widget according to the needs
60 /// \param theValue the wrapped widget value
61 virtual bool setSelection(ModuleBase_ViewerPrs theValue);
64 /// The methiod called when widget is activated
65 virtual void activate();
67 /// The methiod called when widget is deactivated
68 virtual void deactivate();
73 /// Activate or deactivate selection
74 void activateSelection(bool toActivate);
77 void onSelectionChanged();
80 void updateSelectionName();
81 void raisePanel() const;
83 /// Returns true if shape of given object corresponds to requested shape type
84 /// This method is called only in non sub-shapes selection mode
85 virtual bool acceptObjectShape(const ObjectPtr theObject) const;
87 /// Returns true if selected shape corresponds to requested shape types
88 /// This method is called only in sub-shapes selection mode
89 virtual bool acceptSubShape(std::shared_ptr<GeomAPI_Shape> theShape) const;
91 /// Returns true if selected object corresponds to requested Object type
92 /// Thid method is used in any selection mode
93 virtual bool acceptObjectType(const ObjectPtr theObject) const;
96 // Set the given object as a value of the widget
97 void setObject(ObjectPtr theObj, std::shared_ptr<GeomAPI_Shape> theShape = std::shared_ptr<GeomAPI_Shape>());
99 /// Check the selected with validators if installed
100 virtual bool isValid(ObjectPtr theObj, std::shared_ptr<GeomAPI_Shape> theShape);
103 void clearAttribute();
105 //----------- Class members -------------
107 QWidget* myContainer;
109 QLineEdit* myTextLine;
111 ModuleBase_IWorkshop* myWorkshop;
113 ObjectPtr mySelectedObject;
114 std::shared_ptr<GeomAPI_Shape> myShape;
116 QStringList myShapeTypes;
117 QStringList myObjectTypes;
119 /// If true then local selector has to be activated in context
124 Handle(ModuleBase_ObjectTypesFilter) myObjTypeFilter;