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"
11 #include <ModelAPI_Object.h>
12 #include <GeomAPI_Shape.h>
14 #include <TopAbs_ShapeEnum.hxx>
16 #include <QStringList>
19 class Config_WidgetAPI;
24 class ModuleBase_IWorkshop;
26 class MODULEBASE_EXPORT ModuleBase_WidgetShapeSelector : public ModuleBase_ModelWidget
30 ModuleBase_WidgetShapeSelector(QWidget* theParent, ModuleBase_IWorkshop* theWorkshop,
31 const Config_WidgetAPI* theData, const std::string& theParentId);
33 virtual ~ModuleBase_WidgetShapeSelector();
35 /// Saves the internal parameters to the given feature
36 /// \param theObject a model feature to be changed
37 virtual bool storeValue() const;
39 virtual bool restoreValue();
41 virtual bool focusTo();
43 /// Returns the internal parent wiget control, that can be shown anywhere
44 /// \returns the widget
45 QWidget* getControl() const
50 /// Returns list of widget controls
51 /// \return a control list
52 virtual QList<QWidget*> getControls() const;
54 ObjectPtr selectedFeature() const
56 return mySelectedObject;
59 /// Set the given wrapped value to the current widget
60 /// This value should be processed in the widget according to the needs
61 /// \param theValue the wrapped widget value
62 virtual bool setValue(ModuleBase_WidgetValue* theValue);
66 /// Activate or deactivate selection
67 void activateSelection(bool toActivate);
70 void onSelectionChanged();
73 bool eventFilter(QObject* theObj, QEvent* theEvent);
76 void updateSelectionName();
77 void raisePanel() const;
78 bool isAccepted(const ObjectPtr theObject) const;
79 bool isAccepted(boost::shared_ptr<GeomAPI_Shape> theShape) const;
81 // Set the given object as a value of the widget
82 void setObject(ObjectPtr theObj, boost::shared_ptr<GeomAPI_Shape> theShape = boost::shared_ptr<GeomAPI_Shape>());
84 static TopAbs_ShapeEnum shapeType(const QString& theType);
88 QLineEdit* myTextLine;
89 //QToolButton* myActivateBtn;
91 ModuleBase_IWorkshop* myWorkshop;
93 ObjectPtr mySelectedObject;
94 boost::shared_ptr<GeomAPI_Shape> myShape;
96 QStringList myShapeTypes;
98 /// If true then local selector has to be activated in context
101 QPalette myBasePalet;
102 QPalette myInactivePalet;